Foros del Web » Programando para Internet » PHP »

Modificar datos

Estas en el tema de Modificar datos en el foro de PHP en Foros del Web. Hola a todos. Haber si me podéis echar una mano. Tengo un formulario que inserta datos a una BD. Tengo un script que los coge ...
  #1 (permalink)  
Antiguo 18/01/2013, 15:36
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 12 años
Puntos: 1
Modificar datos

Hola a todos. Haber si me podéis echar una mano.
Tengo un formulario que inserta datos a una BD.
Tengo un script que los coge y los inserta.
Tengo un script que muestra esos valores y con un boton para modificar.

"Aqui", va mi problema!

Al pinchar en ese boton (modificar), me llevaria a un formulario (identico al de insertar), con los datos a modificar rellenados.

"Pero", al pinchar en el boton actualizar, me dice que LA ACTUALIZACION fue exitosa, pero al mirar en la BD veo que los datos no fueron insertados.

Os dejaré el código y haber si me podeis echar una mano.
Marcaré en el código donde creo que esta mal la cosa.

insertar.html
Código:
<html>
...
<body>
<form name="form1" action="recoge.php" method="POST">
NOMBRE: <br />
<input type="text" name="nombre" /><br />
APELLIDO: <br />
<input type="text" name="apellido" /> <br />
<input type="submit" value="INSERTAR" />
</form>
</body>
</html>
recoge.php
Código:
<?php
$nombre=$_POST['nombre'];
$apellido=$_POST['apellido'];
include('conexion.php');
$conexion=mysql_connect($host,$user,$password);
mysql_select_db($basedatos,$conexion);
$insert= "INSERT $tabla (nombre,apellido) Values ('$nombre','apellido')";
mysql_query($insert,$conexion);
//...aqui vendria el codigo de si se ha conectado etc, etc,..
mysql_close($conexion):
?>
listado.php
Código:
<?php
include('conexion.php');
$conexion=mysql_connect($host,$user,$password);
mysql_select_db($basedatos,$conexion);
$consulta="SELECT * FROM $tabla";
$resultado= mysql_query($consulta,$conexion);
//Construyo una tabla para mostrar los valores de la consulta
echo "<table>";
echo "<tr>";
echo "<td colspan='5' align='center'>LISTADO</td>";
echo "</tr>";
echo "<tr><th>ID</th><th>NOMBRE</th><th>APELLIDO</th></tr>";



//Aqui podria estar uno de los problemas, a continuacion.


while ($registro = mysql_fetch_row($resultado)){
	echo "<tr bgcolor='#ffffff'>"; //empiezo una fila
	$contador = 0;
	$valorcontador = 'nada';
	foreach($registro  as $clave){
		$contador = $contador + 1;
		echo "<td>",$clave,"</td>";
		if ($contador == 1) $valorcontador = $clave; 
	}:stress:
	echo "<td align='center'>";
	echo "<form enctype='multipart/form-data' name='form2' method='POST' action='actualizar_form.php'>";
	echo "     <input type='hidden' name='algo' value='$valorcontador'>"; //envio al formulario scriptdelete un valor oculto para saber el valor seleccionado
	echo "     <input type='submit' value='MODIFICAR'>"; 
	echo "</form>";
	echo "</td></tr>";
}
     
echo "</table>"; 
mysql_close($conexion);
?>
actualizar_form.php
Código:
<html>
...
<body>

<?php
$recibido=$_REQUEST['algo'];
include(conexion.php);
$conexion=mysql_connect($host,$user,$password);
mysql_select_db($basedatos,$conexion);




//En la siguiente consulta puede estar el fallo.

$consulta= "SELECT * FROM $tabla WHERE nombre = '$recibido'";

mysql_query($consulta,$conexion);
$resultado=mysql_query($consulta,$conexion);
$row=mysql_fetch_array($resultado);
?>

<form name="form1" action="actualizar.php" method="POST">
NOMBRE: <br />
<input type="text" name="nombre" value="<?php echo $row['nombre']; ?>" /><br />
APELLIDO: <br />
<input type="text" name="apellido" value="<?php echo $row['apellido']; ?> /> <br />
<input type="submit" value="ACTUALIZAR" />
</form>
</body>
</html>
actualizar.php
Código:
<?php
$nombre=$_POST['nombre'];
$apellido=$_POST['apellido'];
include('conexion.php');
$conexion=mysql_connect($host,$user,$password);
mysql_select_db($basedatos,$conexion);

//Aqui tambien puede estar el problema, en la actualizacion.

$actualiza= "UPDATE $tabla SET nombre='$nombre',apellido='$apellido' WHERE nombre ='$nombre'";
mysql_query($actualiza,$conexion);
//...aqui vendria el codigo de si se ha conectado etc, etc,...
mysql_close($conexion)
?>
Ese es un codigo con menos datos, pero los fallos estan donde he señalado con //fallo en el codigo.
Haber si podeis echar un cable. Gracias
  #2 (permalink)  
Antiguo 18/01/2013, 15:58
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Modificar datos

Cambia todos tus:

Código PHP:
Ver original
  1. mysql_query($insert,$conexion);

por

Código PHP:
Ver original
  1. mysql_query($actualiza,$conexion) or die(mysql_error());

para encontrar más fácil el error.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 18/01/2013, 17:20
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 12 años
Puntos: 1
Respuesta: Modificar datos

Cita:
Iniciado por andresdzphp Ver Mensaje
Cambia todos tus:

Código PHP:
Ver original
  1. mysql_query($insert,$conexion);

por

Código PHP:
Ver original
  1. mysql_query($actualiza,$conexion) or die(mysql_error());

para encontrar más fácil el error.
El caso es que no me sale ningun error. Ni con mysql_error(). Aparte el código para la comprobacion que tengo esta bien. Pero me sale como que se ha modificado los datos.
A continuacion os pongo aqui el codigo que tengo para la comprobacion.
Ese codigo va en el script actualiza.php donde pone //...aqui vendria el codigo de si se ha conectado etc, etc,...
Código:
if (mysql_errno($conexion)==0){
	echo "<h3 align='center'>REGISTRO ACTUALIZADO</b></h3>";
	}else{
		if (mysql_errno($conexion)==1062)
		{
			echo "<h2 align='center'>NO HA PODIDO ACTUALIZARSE EL REGISTRO</h2>";
		}else{
			$numerror=mysql_errno($conexion); 
			$descrerror=mysql_error($conexion);
			echo "<h3 align='center'>SE HA PRODUCIDO UN ERROR nº $numerror QUE CORRESPONDE A: $descrerror</h3>  <br />"; 
			}
}
mysql_close($conexion);
No consigo lograr hallar el problema.
  #4 (permalink)  
Antiguo 18/01/2013, 19:21
Avatar de JhonErick  
Fecha de Ingreso: noviembre-2012
Ubicación: colombia
Mensajes: 38
Antigüedad: 11 años, 6 meses
Puntos: 3
Respuesta: Modificar datos

$actualiza= "UPDATE $tabla SET nombre='$nombre',apellido='$apellido' WHERE nombre ='$nombre'"; tu error esta aqui xD como vas hacer un update con un campo de búsqueda para actualizar un campo en la BD; Normalmente se utiliza el id de dicho campo el cual se debe guardar en un campo oculto en el formulario para que te lo envie a actualizar.php.

en plastilina tengo un usuario que en la base de datos esta almacenado jhon y quiero cambiarlo a jorge en tu query esta que actualice nombre=jorge cuando nombre=jorge como lo actualizara si jorge aun no existe en la base de datos nombre aun vale jhon;
la cosa debería quedar algo así:
$actualiza= "UPDATE $tabla SET nombre='$nombre',apellido='$apellido' WHERE id =$id";

Saludos
  #5 (permalink)  
Antiguo 18/01/2013, 19:25
Avatar de JhonErick  
Fecha de Ingreso: noviembre-2012
Ubicación: colombia
Mensajes: 38
Antigüedad: 11 años, 6 meses
Puntos: 3
Respuesta: Modificar datos

otra cosa el update en tu caso no tira error por que el se esta ejecutando bien solo que no existe el campo al cual hacerle el update...

Como siempre les digo a los novatos que les cuesta como en este caso xD hacer un echo $actualiza para comprender el query e implementarlo en phpMyadmin o con lo que este trabajando para comprobar que se esta ejecutando correctamente.

Saludos

Última edición por JhonErick; 18/01/2013 a las 19:34
  #6 (permalink)  
Antiguo 19/01/2013, 11:16
 
Fecha de Ingreso: mayo-2012
Mensajes: 23
Antigüedad: 12 años
Puntos: 1
Respuesta: Modificar datos

Muchas gracias por las respuestas.
Ya lo he solucionado.
Como os lo dije el codigo original no es ese. (ese era para poder encontrar el problema).
El codigo original si tiene un campo ID (Primary Key).
Lo he solucionado gracias a que
Cita:
JhonErick
me ha dado la pista.

Cita:
Normalmente se utiliza el id de dicho campo el cual se debe guardar en un campo oculto en el formulario para que te lo envie a actualizar.php.
Me faltaba enviar el id con campo oculto en el actualizar_form.php y luego hacer que el UPDATE .... tal, tal sea ID = id en el actualizar.php.
Solucionado.

Os pongo aqui el trozo de código que introduje por si alguien algun dia tenga el mismo problema.

Añadir en actualizar_form.php el siguiente código:
Código:
<input type="hidden" name="ID" value="<?php echo $row['ID']; ?> />
Luego en actualizar.php:
Código:
//recoge la variable que fue enviada del formulario.
$id=$_REQUEST['ID'];

//Cambiar el codigo anterior por ese
$actualiza= "UPDATE $tabla SET nombre='$nombre',apellido='$apellido' WHERE ID ='$id'";
SOLUCIONADO. La aplicación funciona.

Etiquetas: formulario, html, modificar, mysql, registro, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:46.