PHP - varios errores al hacer crud

 
Vista:
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

varios errores al hacer crud

Publicado por Charly (69 intervenciones) el 03/11/2017 19:28:50
Estoy creando un formulario html para que me guarde los datos que introduzca en un fichero txt.
Escribe bien en el fichero, pero a la hora de mostrar solo muestra la última línea.
Además, tengo un problema a la hora de crear y llamar a las dos variables del formulario, ya que quiero que si le doy a mostrar no aparezca el formulario sino la tabla, de lo contrario que muestre el formulario con los últimos datos introducidos.
Este es el código que he escrito:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php //CRUD
	if(isset($_POST['boton1'])){
		$nombre=$_POST['nombre'];
	$edad=$_POST['edad'];
		if(!empty($_POST['nombre'])||!empty($_POST['nombre'])){
			$f1=fopen("alumnos.txt","a+");
			fputs($f1,$_POST['nombre']."|".$_POST['edad']."\r\n");
			fclose($f1);
		}
	}
	if(isset($_POST['boton2'])){
		echo "<table>";
		echo "<tr>";
		echo "<th>Alumno|</th>";
		echo "<th>Edad</th>";
		echo "</tr>";
		$f1=fopen("alumnos.txt","r");
		$linea=fgets($f1);
		while(!feof($f1)){
			$campo=explode("|",$linea);
			if(!empty($_POST['nombre'])&&!empty($_POST['edad'])){
				echo "<tr>";
				echo "<td>".$_POST['nombre']."</td>";
				echo "<td>".$_POST['edad']."</td>";
				echo "</tr>";
				$linea=fgets($f1);
			}
			echo "</table>";
		}
		fclose($f1);
	}else{
		$nombre=$_POST['nombre'];
		$edad=$_POST['edad'];
		echo "<div class='container'>
		<div class='jumbotron'>
        <h1>Formulario Alumnos</h1>
        <p>Introduce el nombre y la edad para modificar el fichero.</p>
		</div>
		<form name='formulario_alumnos' action='' method='post'>
		<div class='form-group'>
		<label for='nombre'>Introduce tu nombre:</label>
		<input type='text' class='form-control' placeholder='Introduce tu nombre' name='nombre' value=' <?php $nombre ?> ' size=10><br>
		<label for='edad'>Introduce tu edad:</label>
		<input type='number' class='form-control' placeholder='Introduce tu edad' name='edad' value=' <?php $edad ?> ' size=2><br>
		</div>
		<div class='botons-group'>
		<input type='submit' name='boton1' value='GUARDAR'><br>
		<input type='submit' name='boton2' value='MOSTRAR'><br>
		<input type='submit' name='boton3' value='ELIMINAR'><br>
		<input type='submit' name='boton4' value='MODIFICAR'><br>
		<input type='submit' name='boton5' value='BUSCAR'><br>
		<input type='submit' name='boton6' value='NUEVO'><br>
		</div>
		</form>
		</div>";
	}
	if(isset($_POST['boton3'])){
 
	}
	if(isset($_POST['boton4'])){
 
	}
	if(isset($_POST['boton5'])){
 
	}
	if(isset($_POST['boton6'])){
		$nombre="";
		$edad=0;
	}
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de abzerox
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

varios errores al hacer crud

Publicado por abzerox (157 intervenciones) el 04/11/2017 04:54:09
Hola, hice algunas modificaciones en tu código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
ini_set('display_errors', '1');
 
	if (isset($_POST['boton1'])){
		$nombre = $_POST['nombre'];
	    $edad = $_POST['edad'];
		if(!empty($_POST['nombre'])&&!empty($_POST['nombre'])){
			$f1 = fopen("alumnos.txt","a+");
			fwrite($f1,$_POST['nombre']."|".$_POST['edad']."\r\n");
			fclose($f1);
		}
	}
 
	if(isset($_POST['boton2'])){
		echo "<table>";
		echo "<tr>";
		echo "<th>Alumno|</th>";
		echo "<th>Edad</th>";
		echo "</tr>";
 
		$f1 = fopen("alumnos.txt","r");
 
		while(!feof($f1)){
			if($linea = fgets($f1)) {
			    $campo = explode("|", $linea);
				echo "<tr>";
				echo "<td>".$campo[0]."</td>";
				echo "<td>".$campo[1]."</td>";
				echo "</tr>";
			}
		}
		echo "</table>";
		fclose($f1);
	} else {
		$nombre= isset($_POST['nombre']) ? $_POST['nombre'] : '';
		$edad= isset($_POST['edad']) ? $_POST['edad'] : '';
 
		echo "<div class='container'>
		    <div class='jumbotron'>
                <h1>Formulario Alumnos</h1>
                <p>Introduce el nombre y la edad para modificar el fichero.</p>
		    </div>
		    <form name='formulario_alumnos' action='' method='post'>
		        <div class='form-group'>
		            <label for='nombre'>Introduce tu nombre:</label>
		            <input type='text' class='form-control' placeholder='Introduce tu nombre' name='nombre' value='".$nombre."' size=10><br>
		            <label for='edad'>Introduce tu edad:</label>
		            <input type='number' class='form-control' placeholder='Introduce tu edad' name='edad' value='".$edad."' size=2><br>
		        </div>
		            <div class='botons-group'>
		            <input type='submit' name='boton1' value='GUARDAR'><br>
		            <input type='submit' name='boton2' value='MOSTRAR'><br>
		            <input type='submit' name='boton3' value='ELIMINAR'><br>
		            <input type='submit' name='boton4' value='MODIFICAR'><br>
		            <input type='submit' name='boton5' value='BUSCAR'><br>
		            <input type='submit' name='boton6' value='NUEVO'><br>
		        </div>
		    </form>
		</div>";
	}

Nos comentas si te sirvio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

varios errores al hacer crud

Publicado por Charly (69 intervenciones) el 04/11/2017 08:41:52
Gracias por responder abzerox.
He arreglado lo de las variables en el formulario, pero a la hora de mostrar en la tabla solo me aparece el último y varias veces, de esta manera:

Alumno | Edad
Luis 12
Luis12Luis12Luis12Luis12Luis12Luis12

Por cierto, ¿para qué sirve esta linea?:
1
ini_set('display_errors', '1');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

varios errores al hacer crud

Publicado por abzerox (157 intervenciones) el 05/11/2017 04:02:21
Hola, puedes hacer algunas mejoras en tu código, como por ejemplo: en lugar de utilizar inputs de tipo submit, (lo que provoca que se cumplan todos los condicionales if ya que siempre enviás el form) pude ser más eficiente en primera instancia (ya luego puedes mejorarlo), utilizar enlaces y capturar la variable $_GET, algo así:

En lugar de:
1
<input type='submit' name='boton2' value='MOSTRAR'><br>

Cambiar por:
1
2
$url = $_SERVER['PHP_SELF'].'?action=mostrar';
<a href='".$url."'>MOSTRAR</a>

Esto puede aplicarse al resto de los bótones.
Adjunto el código con mejoras para que puedas estudiarlo y modificarlo.

Con respecto a la función ini_set, esta permite establecer el valor de una directiva de php en tiempo de ejecución. Dicha función toma dos parámetros (DIRECTIVA, VALOR). En este caso la directiva utilizada es display_errors, la cual con un valor de '1' esta activa, por lo tanto los errores serán mostrado. (IMPORTANTE: cambiar esta directiva a '0' cuando la aplicación este en fase de producción).

Existen muchas más directivas y funciones con respecto a este tema te dejo las referencias a la web oficial:
http://php.net/manual/es/function.ini-set.php
http://php.net/manual/es/errorfunc.configuration.php#ini.display-errors
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Charly
Val: 182
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

varios errores al hacer crud

Publicado por Charly (69 intervenciones) el 05/11/2017 09:40:52
Si, todo esto está muy bien, gracias abzerox.
pero mi problema no es la seguridad de las variables, sino el mostrarlas bien en la página.
Necesito que al darle al botón mostrar me muestre todas las entradas que hay en el fichero txt.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

varios errores al hacer crud

Publicado por abzerox (157 intervenciones) el 06/11/2017 00:05:09
Hola Charly, en el archivo adjunto del mensaje anterior ya realiza el listado de los alumnos que se encuentran en el fichero.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar