PHP - modificar registro en fichero

 
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

modificar registro en fichero

Publicado por Charly (70 intervenciones) el 09/11/2017 13:18:24
Tengo una pagina php para crear, modificar, eliminar, mostrar y buscar alumnos introducidos por formulario y guardados en un fichero txt.
El problema viene cuando quiero modificar uno y comprobar que no existe otro alumno con el mismo nombre.
Tengo este 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
if(isset($_POST['modificar'])){
	$nombre=$_POST['nombre'];
	$edad=$_POST['edad'];
	$esta=false;
	if(!empty($_POST['nombre'])&&!empty($_POST['edad'])){
		$f1=fopen("alumnos.txt","a+");
		$f2=fopen("alumnos2.txt","w+");
		$linea=fgets($f1);
		while(!feof($f1)){
			list($nom,$ed)=explode("|",$linea);
			if($nombre!=$nom){
				fputs($f2,$linea);
			}else{
				fputs($f2,$_POST['nombre']."|".$_POST['edad']."\r\n");
			}
			$linea=fgets($f1);
		}
		fclose($f1);
		fclose($f2);
		unlink("alumnos.txt");
		rename("alumnos2.txt","alumnos.txt");
	}
}
Pero así me modifica con cualquier otro nombre, sin buscar si ya existe otro más o no.
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
sin imagen de perfil
Val: 604
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

modificar registro en fichero

Publicado por Miguel (218 intervenciones) el 09/11/2017 23:05:57
Yo te recomendaría usar alguna base de datos para este tipo de operaciones, SQLite si quieres que sea portable...

De todas formas, si quieres continuar así te sugiero usar algún id para diferenciar tus registros (podrías usar el DNI también).
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

modificar registro en fichero

Publicado por Charly (70 intervenciones) el 10/11/2017 09:31:30
Gracias por responder Miguel.
No puedo utilizar ninguna base de datos.
Me han comentado algo de usar un campo oculto, pero no se como hacerlo.
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 David Morales

modificar registro en fichero

Publicado por David Morales (15 intervenciones) el 10/11/2017 16:47:10
Hola que tal Charly mira creo que para resolver tu problema podrías almacenar en un arreglo el nombre de la persona que deseas buscar, en el archivo de lista_de_alumnos.txt que creas y revisas podrías asignar un elemento que sirva como diferenciador, por ejemplo:

Juan Perez ramirez /
Carlos ernesto sanchez /
etc..

basicamente lo que harías seria guardar en un arreglo cada uno de los nombres completos con una función que recorra el archivo y separe los nombres hasta que se encuentre el elemento diferenciador que en este caso seria "/" y los almacene en el arreglo que en este caso llamaremos $lista_de_alumnos. y donde guardaremos el nombre de la persona se llamara $buscar.

entonces digamos que buscas Juan perez ramirez.

1
2
3
4
5
6
7
8
9
10
<?php
$buscar = array(
    "dato1" => "Juan Perez Ramirez",
);
 
$lista_de_alumnos = array(
    "dato1" => "Juan Perez ramirez",
    "dato2" => "Carlos ernesto sanchez",
);
?>

ya teniendo eso solo comparas los arreglos hasta encontrar el nombre que necesitas para saber si existe o si no existe y ya realizas las funciones que necesitas. el ejemplo es muy básico :) saludos!

aquí puedes encontrar información que te puede ayudar a complementar este ejercicio:
http://php.net/manual/es/function.array-diff.php
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