Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con Update de Registro

Estas en el tema de Problema con Update de Registro en el foro de PHP en Foros del Web. Buenos días, estoy tratando de realizar un update de registros utilizando 1 sólo archivo. Para ello primero envío el ID por GET de la siguiente ...
  #1 (permalink)  
Antiguo 15/07/2014, 09:16
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 15 años, 9 meses
Puntos: 0
Problema con Update de Registro

Buenos días, estoy tratando de realizar un update de registros utilizando 1 sólo archivo.

Para ello primero envío el ID por GET de la siguiente manera:

Cita:
Código PHP:
Ver original
  1. <a href="modifica.php?id_producto=<?php echo $fila['id_producto']; ?>">Modifica</a>
Luego recibo el ID en el archivo modifica.php:

Cita:
Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. $id = $_GET['id_producto'];
  4.  
  5. if(isset($_POST["enviar"])){
  6.   $consulta = "UPDATE productos SET nombre='$nombre', categoria='$categoria' WHERE id_producto=$id";
  7.   $resultado = mysql_query($consulta, $conexion) or die(mysql_error());
  8.   echo "Los datos fueron actualizados con éxito!.\n";
  9. } else {
  10.   $categorias = mysql_query ("SELECT * from categorias ORDER BY id_categoria ASC;", $conexion);
  11.   $consulta = "SELECT * FROM productos WHERE id_producto=$id";
  12.   $resultado = mysql_query($consulta, $conexion) or die(mysql_error());
  13.   $fila=mysql_fetch_array ($resultado);
  14. ?>
  15. <form action="modifica.php" method="post">
  16.   <input name="nombre" type="text" value="<?php echo $fila["nombre"]; ?>">
  17.   <select name="categoria">
  18.     <option><?php echo $fila["categoria"]; ?></option>
  19.     <?php
  20.         while ($fila=mysql_fetch_array($categorias))
  21.         {
  22.             echo "<option value='".$fila ["id_categoria"]."'>".$fila ["categoria"]."</option>";
  23.         }
  24.         mysql_close($conexion);
  25.     ?>
  26.   </select>
  27.   <input type="submit" value="Guardar Cambios" name="enviar">
  28. </form>
  29. <?php
  30. }    
  31. ?>
Vengo bastante bien, pero me pasan 2 cosas:

1) Me tira el siguiente error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

2) Necesito que el option del select me muestre el nombre de la categoría, ahora me levanta el ID.

Me podrán ayudar?

Muchas gracias!
  #2 (permalink)  
Antiguo 15/07/2014, 09:27
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: Problema con Update de Registro

Te está llegando un dato vacío.

Verifica con

Código PHP:
echo "UPDATE productos SET nombre='$nombre', categoria='$categoria' WHERE id_producto=$id"
para que veas que está haciendo la consulta.

con

Código PHP:
var_dump($_POST); 
para que veas que estás enviando a la consulta.
  #3 (permalink)  
Antiguo 15/07/2014, 09:44
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con Update de Registro

Para no marear con el código saqué lo de categorías y dejé solamente esto:

Cita:
Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. $id = $_GET['id_producto'];
  4.  
  5. if(isset($_POST["enviar"])){
  6.   $consulta = "UPDATE productos SET nombre='$nombre' WHERE id_producto=$id";
  7.   $resultado = mysql_query($consulta, $conexion) or die(mysql_error());
  8.   echo "Los datos fueron actualizados con éxito!.\n";
  9. } else {
  10.   $consulta = "SELECT * FROM productos WHERE id_producto=$id";
  11.   $resultado = mysql_query($consulta, $conexion) or die(mysql_error());
  12.   $fila=mysql_fetch_array ($resultado);
  13. ?>
  14. <form action="modifica.php" method="post">
  15.   <input name="nombre" type="text" value="<?php echo $fila["nombre"]; ?>">
  16.   <input type="submit" value="Guardar Cambios" name="enviar">
  17. </form>
  18. <?php
  19. }    
  20. ?>
Me levanta ok el nombre pero cuando presiono enviar me tira el error:

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
No estoy pudiendo ver donde está el error, me podrán ayudar?

Muchas gracias!
  #4 (permalink)  
Antiguo 15/07/2014, 09:45
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema con Update de Registro

Al momento de realizar la actualización, las variables $nombre y $categoria no tienen valores, o al menos no muestras en qué parte se los asignas y quizá los campos que intentas actualizar no pueden tener valores nulos. Corrige eso.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 15/07/2014, 10:51
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con Update de Registro

Alexis, le agregué este codigo para no enviar vacíos los campos:

Cita:
Código PHP:
Ver original
  1. $categoria = $_POST['categoria'];
  2.   $nombre = $_POST['nombre'];
Pero me sigue dando el mismo error.

Me podrás orientar?

Muchas gracias!
  #6 (permalink)  
Antiguo 15/07/2014, 11:26
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: Problema con Update de Registro

El problema no es ese Galaktico.

El input que envía el nombre,

Código PHP:
<input name="nombre" type="text" value="<?php echo $fila["nombre"]; ?>">
recibe el valor de la consulta,

Código PHP:
} else {
  
$consulta "SELECT * FROM productos WHERE id_producto=$id";
  
$resultado mysql_query($consulta$conexion) or die(mysql_error());
  
$fila=mysql_fetch_array ($resultado);
?> 
entonces, cuando le das en "enviar", entra aquí:

Código PHP:
if(isset($_POST["enviar"])){
  
$consulta "UPDATE productos SET nombre='$nombre' WHERE id_producto=$id";
  
$resultado mysql_query($consulta$conexion) or die(mysql_error());
  echo 
"Los datos fueron actualizados con éxito!.\n"
sin nunca haber obtenido el valor de "nombre".

nombre siempre viaja vacío por lo que veo. Deberías sacar esa consulta del if.

Código PHP:
<?php 
include("conexion.php");

$consulta "SELECT * FROM productos WHERE id_producto=$id";
$resultado mysql_query($consulta$conexion) or die(mysql_error());
$fila=mysql_fetch_array ($resultado);


$id $_GET['id_producto'];
$categoria $_POST['categoria'];
$nombre $_POST['nombre'];
 
if(isset(
$_POST["enviar"])){
  
$consulta "UPDATE productos SET nombre='$nombre' WHERE id_producto=$id";
  
$resultado mysql_query($consulta$conexion) or die(mysql_error());
  echo 
"Los datos fueron actualizados con éxito!.\n"

?>

<form action="modifica.php" method="post">
     <input name="nombre" type="text" value="<?php echo $fila["nombre"]; ?>">
     <input type="submit" value="Guardar Cambios" name="enviar">
</form>
  #7 (permalink)  
Antiguo 15/07/2014, 12:36
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con Update de Registro

Probé de la siguiente manera:

Cita:
Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. $id = $_GET['id_producto'];
  4. $nombre = $_POST['nombre'];
  5. $consulta = "SELECT * FROM productos WHERE id_producto=$id";
  6. $resultado = mysql_query($consulta, $conexion) or die(mysql_error());
  7. $fila=mysql_fetch_array ($resultado);
  8.  
  9. if(isset($_POST["enviar"])){
  10.   $consulta = "UPDATE productos SET nombre='$nombre' WHERE id_producto=$id";
  11.   $resultado = mysql_query($consulta, $conexion) or die(mysql_error());
  12.   echo "Los datos fueron actualizados con éxito!.\n";
  13. } else {
  14. ?>
  15. <form action="modifica.php" method="post">
  16.   <input name="nombre" type="text" value="<?php echo $fila["nombre"]; ?>">
  17.   <input type="submit" value="Guardar Cambios" name="enviar">
  18. </form>
  19. <?php
  20. }    
  21. ?>
Pero me sigue dando el error:
Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Se les ocurre alguna solución?

Muchas gracias!
  #8 (permalink)  
Antiguo 15/07/2014, 12:43
 
Fecha de Ingreso: junio-2014
Mensajes: 14
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Problema con Update de Registro

Ahm no quiero parecer tonta, pero, cuando realizas la segunda consulta, es decir cuando pulsas enviar de donde sacas el valor de la variable $id?. Porque ya no la estas enviando por GET. Te propongo una cosa a ver si es lo que sospecho.

En el formulario añade un input de tipo hidden y que tenga como value el valor de la variable $id y en el if extrae también el valor de este campo. sería algo asi.

Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. $id = $_GET['id_producto'];
  4. $nombre = $_POST['nombre'];
  5. $consulta = "SELECT * FROM productos WHERE id_producto=$id_r";
  6. $resultado = mysql_query($consulta, $conexion) or die(mysql_error());
  7. $fila=mysql_fetch_array ($resultado);
  8.  
  9. if(isset($_POST["enviar"])){
  10. $id_producto = $_POST['id']
  11.   $consulta = "UPDATE productos SET nombre='$nombre' WHERE id_producto=$id_producto";
  12.   $resultado = mysql_query($consulta, $conexion) or die(mysql_error());
  13.   echo "Los datos fueron actualizados con éxito!.\n";
  14. } else {
  15. ?>
  16. <form action="modifica.php" method="post">
  17.   <input name="nombre" type="text" value="<?php echo $fila["nombre"]; ?>">
  18.   <input type="submit" value="Guardar Cambios" name="enviar">
  19. <input type="hidden" name="id" value="<?php echo $id ?>">
  20. </form>
  21. <?php
  22. }    
  23. ?>
  #9 (permalink)  
Antiguo 15/07/2014, 12:45
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Problema con Update de Registro

Ya nada, he puesto precisamente lo mismo que Drowna, pero el le dio a enviar antes.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net

Última edición por bookmaster; 15/07/2014 a las 12:48 Razón: Mismo comentarioa que Drowna
  #10 (permalink)  
Antiguo 15/07/2014, 13:14
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con Update de Registro

Yo lo planteé así:

1) Utilizo un buscador para buscar el producto a modificar.
2) En la página resultado listo los resultados y de ahí voy al archivo modifca.php pasando el ID por GET de la siguiente manera:

Cita:
Código PHP:
Ver original
  1. <a href="modifica.php?id_producto=<?php echo $fila['id_producto']; ?>">Modifica</a>
Lo que necesito es hacer un Update en la base trayendo el ID de otro archivo.

De ahí es de donde viene el valor de $id, por eso lo rescato así:

Cita:
Código PHP:
Ver original
  1. $id = $_GET['id_producto'];
Y luego intento realizar todo en el mismo archivo:

Cita:
Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. $id = $_GET['id_producto'];
  4.  
  5. if(isset($_POST["enviar"])){
  6.   $consulta = "UPDATE productos SET nombre='$nombre' WHERE id_producto=$id";
  7.   $resultado = mysql_query($consulta, $conexion) or die(mysql_error());
  8.   echo "Los datos fueron actualizados con éxito!.\n";
  9. } else {
  10.   $consulta = "SELECT * FROM productos WHERE id_producto=$id";
  11.   $resultado = mysql_query($consulta, $conexion) or die(mysql_error());
  12.   $fila=mysql_fetch_array ($resultado);
  13. ?>
  14. <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
  15.   <input name="nombre" type="text" value="<?php echo $fila["nombre"]; ?>">
  16.   <input type="submit" value="Guardar Cambios" name="enviar">
  17. </form>
  18. <?php
  19. }    
  20. ?>
Lo estoy planteando mal?
  #11 (permalink)  
Antiguo 15/07/2014, 13:17
 
Fecha de Ingreso: junio-2014
Mensajes: 14
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Problema con Update de Registro

En parte si, porque cuando pulsas el botón enviar le indicas al script que te lea de nuevo todo el script de la página pero no le estas diciendo que obtenga ese valor de nuevo por get si no por post por lo que el $id te lo enviará como una cadena vacia
  #12 (permalink)  
Antiguo 15/07/2014, 13:32
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con Update de Registro

Entonces hay algo que no entiendo conceptualmente.

Si parto de un buscador para elegir el producto a modificar, indefectiblemente tengo que pasar un ID.

Luego modifico el Form con los nuevos valores y luego indefectiblemente tengo que volver a hacer Post o Get, por lo tanto pierdo el ID de la página resultado anterior?

Entonces como es que se debe realizar correctamente?

Perdón por la consulta, pero tengo realizado el ABM casi completo!

Me falta solamente el modifica.php

Si partira de la página resultado, envío el ID por GET.

Cita:
Código PHP:
Ver original
  1. <a href="elimina.php?id_producto=<?php echo $fila['id_producto']; ?>">Modifica</a>
Luego en el archivo modifica.php tengo mi formulario:

Cita:
Código HTML:
Ver original
  1. <form action="" method="post">
  2.   <input name="nombre" type="text">
  3. </form>
De qué manera conceptualmente debería hacer el Update?
  #13 (permalink)  
Antiguo 15/07/2014, 13:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema con Update de Registro

Una query armada en PHP con esta sintaxis:
Código SQL:
Ver original
  1. UPDATE productos SET nombre='$nombre' WHERE id_producto=$id
O esta:
Código SQL:
Ver original
  1. SELECT * FROM productos WHERE id_producto=$id
Puede producir un error de sintaxis si y SOLO SI la variable $id es nula.
Únicamente.

Vale decir, a pesar de lo que insistas, el ID no está llegando a la query, y no veo que lo estés validando... al menos no lo estás validando bien.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #14 (permalink)  
Antiguo 15/07/2014, 14:01
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con Update de Registro

Yo parto de un buscador y luego de la página resultado paso el ID a modificar por GET, luego el formulario me levanta los datos cargados en la base y allí los modifico, pero después que? si lo hago con un archivo por separado pierdo el ID y si lo hago en el mismo archivo lo tengo vacío al ID.

Me parece que sigo sin entenderlo conceptualmente.
  #15 (permalink)  
Antiguo 15/07/2014, 14:10
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con Update de Registro

Siguiendo la lógica que me plantearon en todo el post debería funcionar así:

Cita:
Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3.  
  4. if(isset($_POST["enviar"])){
  5.   $id = $_GET['id_producto'];
  6.   $consulta = "UPDATE productos SET nombre='$nombre' WHERE id_producto=$id";
  7.   $resultado = mysql_query($consulta, $conexion) or die(mysql_error());
  8.   echo "Los datos fueron actualizados con éxito!.\n";
  9. } else {
  10.   $id = $_GET['id_producto'];
  11.   $consulta = "SELECT * FROM productos WHERE id_producto=$id";
  12.   $resultado = mysql_query($consulta, $conexion) or die(mysql_error());
  13.   $fila=mysql_fetch_array ($resultado);
  14. ?>
  15. <form action="modifica.php" method="post">
  16.   <input name="nombre" type="text" value="<?php echo $fila["nombre"]; ?>">
  17.   <input type="submit" value="Guardar Cambios" name="enviar">
  18. </form>
  19. <?php
  20. }    
  21. ?>
Dado que ahí vuelvo a obtener el $ID.

Pero sigo teniendo el error de sintaxis:

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Me podrán ayudar?

Muchas gracias!
  #16 (permalink)  
Antiguo 15/07/2014, 14:13
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Problema con Update de Registro

Dentro del if usa $_POST en vez de $_GET, y en el form mándalo por un input hidden. Te lo puso Drowna en su código.
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #17 (permalink)  
Antiguo 15/07/2014, 14:40
 
Fecha de Ingreso: julio-2008
Mensajes: 57
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con Update de Registro

Al final lo pude resolver de esta manera:

Cita:
Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3.  
  4. if(isset($_GET['id_producto'])){
  5. $id = $_GET['id_producto'];
  6. $consulta = mysql_query("SELECT * FROM productos WHERE id_producto = $id", $conexion) or die(mysql_error());
  7. $fila = mysql_fetch_array($consulta);
  8. }
  9. if(isset($_POST['enviar']) && $_POST['enviar'] == 'Enviar'){
  10. if(!empty($_POST['nombre'])){
  11. $id_producto = $_POST['id_producto'];
  12. $nombre = $_POST['nombre'];
  13. $consulta_update = mysql_query("UPDATE productos SET nombre = '$nombre' WHERE id_producto = '$id_producto'", $conexion)or die(mysql_error());
  14. echo "Registro actualizado correctamente";
  15. }else{
  16. echo "debe llenar todos los campos";
  17. }
  18. }else{
  19. ?>
  20. <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
  21. <input type="text" name="nombre" value="<?php echo $fila['nombre']; ?>" />
  22. <input type="hidden" name="id_producto" value="<?php echo $fila['id_producto']; ?>" />
  23. <input type="submit" name="enviar" value="Enviar" />
  24. </form>
  25. <?php } ?>
Saludos!
  #18 (permalink)  
Antiguo 15/07/2014, 14:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema con Update de Registro

Cita:
Iniciado por galaktico Ver Mensaje
Yo parto de un buscador y luego de la página resultado paso el ID a modificar por GET, luego el formulario me levanta los datos cargados en la base y allí los modifico, pero después que? si lo hago con un archivo por separado pierdo el ID y si lo hago en el mismo archivo lo tengo vacío al ID.

Me parece que sigo sin entenderlo conceptualmente.
Vamos a ver si se entiende...

Supongamos que $_GET['id_producto'] llegue como NULL, es decir, o no llegue, o no contenga nada, o contenga un espacio en blanco o vacío.
Entonces esto:
Código PHP:
$id $_GET['id_producto']; 
Cuando hagas esto:
Código PHP:
$consulta "UPDATE productos SET nombre='$nombre' WHERE id_producto=$id"
Generará la query para MySQL quedando así:
Código MySQL:
Ver original
  1. UPDATE productos SET nombre='$nombre' WHERE id_producto=

Y en este caso:
Código PHP:
$consulta "SELECT * FROM productos WHERE id_producto=$id"
Quedará así:
Código MySQL:
Ver original
  1. SELECT * FROM productos WHERE id_producto=

¿Ves como en ambos casos le falta el valor de id_producto, y el segundo término de la comparación está vacío?
Bueno, eso es lo que genera un error de sintaxis.

Recuerda que MySQL no recibe variables de PHP, sino una cadena de texto de una consulta SQL. MySQL no entiende pHP. No sabe que le estás mandando algo, porque no le llega.

MySQL (y todo DBMS) es independiente de PHP y de cualquier lenguaje. Es un sistema separado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: mysql, registro, select, sql, update
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 13:21.