Foros del Web » Programando para Internet » PHP »

Problema con consulta Update

Estas en el tema de Problema con consulta Update en el foro de PHP en Foros del Web. hola amigos, he estado buscando en el foro un problema similar aunque muchos hilos parecidos pero no encontré lo que ando buscando, tengo lo siguiente: ...
  #1 (permalink)  
Antiguo 03/02/2010, 19:39
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 2 meses
Puntos: 3
Pregunta Problema con consulta Update

hola amigos, he estado buscando en el foro un problema similar aunque muchos hilos parecidos pero no encontré lo que ando buscando, tengo lo siguiente:

Código PHP:
Ver original
  1. function Save2_Article()
  2. {
  3.     require_once(dirname(__FILE__) .'/DbData.php');
  4.    
  5.     $titulo = $_POST['Titulo'];
  6.     $seccion = $_POST['seccion'];
  7.     $estado = $_POST['estado'];
  8.     $autor = $_POST['Autor'];
  9.     $cuerpo = $_POST['elm1'];
  10.     $fecha = date('Y-m-d H:i:s');
  11.    
  12.     $query = "UPDATE articulos SET title = '$titulo', cat_id = '$seccion', st_id = '$estado', autor = '$autor', body = '$cuerpo', editado = '$fecha' WHERE id = ".$_REQUEST['id'];
  13.    
  14.     if (mysql_query($query))
  15.     {
  16.         Print "EL artículo se actuazó correctamente!";
  17.     } else {
  18.         print mysql_error();
  19.     }
  20. }

Y este el error que obtengo:

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
ahora, si la consulta la pongo así:

Código PHP:
Ver original
  1. $query = "UPDATE articulos SET title = $titulo, cat_id = $seccion, st_id = $estado, autor = $autor, body = $cuerpo, editado = $fecha WHERE id = ".$_REQUEST['id'];

este es el error que obtengo:

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 'Valle del Bravo, cat_id = 2, st_id = 2, autor = Fernando Leonor, body =

Bienv' at line 1
¿Cual es el problema?

Cabe aclarar que los campos body (contiene html) y editado son del tipo TEXT y DATETIME respectivamente.

Saludos.
  #2 (permalink)  
Antiguo 03/02/2010, 19:56
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con consulta Update

¿Seguro que tienes datos en $_REQUEST['id']?

Haz un echo($query); para ver cómo queda la consulta al final.

P.S.: No uses directamente los datos del formulario en la consulta, usa mysql_real_escape_string() para filtrarlos primero (en caso de que sea texto)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 03/02/2010, 20:01
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
Respuesta: Problema con consulta Update

Esto te puedo ayudar

MIRA AQUI
  #4 (permalink)  
Antiguo 03/02/2010, 20:01
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con consulta Update

Si, $_REQUEST['id'] tiene datos, el echo me muestra los dato correctos:

Cita:
UPDATE articulos SET title = El Valle del Bravo, cat_id = 2, st_id = 2, autor = Fernando Leonor, body =

Bienvenido a Orbe 74 y a esta sección Coordenada Tribal en donde encontraras información importante sobre destinos turísticos que podrán ser útiles para planear tus fines de semana o vacaciones, ya sea en compañía de la familia o el grupo de amigos.



En esta primera entrega te llevamos a Valle de Bravo:

\"\"

Valle de Bravo se encuentra a 145 kms. aproximadamente de la Ciudad de México y como dato cultural en tiempos prehispánicos Valle de Bravo ostentaba el nombre de “Temascaltepeque” palabra de origen náhuatl que significa “Cerro de los baños de vapor”.
Ya en el camino de entrada a Valle de Bravo podrás ir deleitando tu vista puesto que te encontraras en un sendero enmarcado por árboles de un verde intenso que al instante te hará sentir en armonía con la naturaleza, cuestión que como citadinos hemos dejado de lado.
Cuando te encuentres ubicado en este delicioso lugar de casas blancas con tejados rojos y calles angostas y empedradas, te recomiendo que en caso de llevar automóvil busques estacionamiento, ya resuelta esta situación, lo primero es y como todo buen turista hacer uso de tus piernas y trasladarte a la plaza de la independencia o mejor conocida como el zócalo de Valle de Bravo.

La plaza de la independencia o el zócalo es el mejor lugar para comenzar a conocer este magnífico lugar, empezando por La parroquia de San Francisco de Asís que se encuentra en este primer cuadro, además de que está rodeada por diversos comercios como restaurantes, cafés, tiendas de víveres y posadas. Aquí podrás disfrutar de un momento de relajación y tal vez una buena charla sentado en una de las bancas que rodean el kiosco acompañando el momento con una nieve del sabor de tu elección o alguno de los antojitos mexicanos que se encuentran a la venta alrededor de esta plaza.
, editado = 2010-02-03 21:59:07 WHERE id = 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 'Valle del Bravo, cat_id = 2, st_id = 2, autor = Fernando Leonor, body =

Bienv' at line 1
Saludos.
  #5 (permalink)  
Antiguo 03/02/2010, 20:07
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con consulta Update

Debes usar las comillas, como en el primer ejemplo que pusiste.

Además, fíjate que muestra "WHERE id = ", significa que $_REQUEST['id'] no tiene datos en realidad.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 03/02/2010, 20:20
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con consulta Update

Cita:
Iniciado por David Ver Mensaje
Debes usar las comillas, como en el primer ejemplo que pusiste.

Además, fíjate que muestra "WHERE id = ", significa que $_REQUEST['id'] no tiene datos en realidad.
Gracias David, lo acabo de ver, fíjate id lo saco del link que es así:

Cita:
http://localhost/orbe/index.php?action=editarticle&id=3
he tratado de obtener el id y no lo logro

en la función lo coloqué así:

Código PHP:
Ver original
  1. function Save2_Article()
  2. {
  3.     require_once(dirname(__FILE__) .'/DbData.php');
  4.    
  5.     $titulo = $_POST['Titulo'];
  6.     $seccion = $_POST['seccion'];
  7.     $estado = $_POST['estado'];
  8.     $autor = $_POST['Autor'];
  9.     $cuerpo = $_POST['elm1'];
  10.     $fecha = date('Y-m-d H:i:s');
  11.         $id = $_GET['id'];
  12.    
  13.     $query = "UPDATE articulos SET title = '$titulo', cat_id = '$seccion', st_id = '$estado', autor = '$autor', body = '$cuerpo', editado = '$fecha' WHERE id = $id";
  14.    
  15.     if (mysql_query($query))
  16.     {
  17.         Print "EL artículo se actuazó correctamente!";
  18.     } else {
  19.         print $query;
  20.         print mysql_error();
  21.     }
  22. }

he probado con $_REQUEST, $_GET y POST y no capto esa variable del link, cabe aclarar que el link está en un achivo diferente al formulario.

Saludos.
  #7 (permalink)  
Antiguo 03/02/2010, 20:23
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con consulta Update

Deberías poder recoger esa variable si está presente en la página que procesa el formulario, ¿index.php es la página que procesa el formulario?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 03/02/2010, 20:38
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con consulta Update

Cita:
Iniciado por David Ver Mensaje
Deberías poder recoger esa variable si está presente en la página que procesa el formulario, ¿index.php es la página que procesa el formulario?
No, no es index.php, el link es redireccionado, el que procesa el formulario es EditArticle.template.php, coloqué una variable en ella así:

$code = $_REQUEST['id'];

y en la función hice esto:

Código PHP:
Ver original
  1. function Save2_Article()
  2. {
  3.     require_once(dirname(__FILE__) .'/DbData.php');
  4.    
  5.     $titulo = $_POST['Titulo'];
  6.     $seccion = $_POST['seccion'];
  7.     $estado = $_POST['estado'];
  8.     $autor = $_POST['Autor'];
  9.     $cuerpo = $_POST['elm1'];
  10.     $fecha = date('Y-m-d H:i:s');
  11.     $code = $_GET['code'];
  12.    
  13.     $query = "UPDATE articulos SET title = '$titulo', cat_id = '$seccion', st_id = '$estado', autor = '$autor', body = '$cuerpo', editado = '$fecha' WHERE id = '$code'";
  14.    
  15.     if (mysql_query($query))
  16.     {
  17.         Print "EL artículo se actuazó correctamente!";
  18.     } else {
  19.         print mysql_error();
  20.     }
  21. }

me dice que se grabó bien, pero en realidad no actualiza nada
  #9 (permalink)  
Antiguo 03/02/2010, 20:42
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con consulta Update

$code no existe en el ámbito de la función, debes usar $GLOBALS['code'] para acceder a la variable. De todos modos, asegúrate de que realmente tiene el valor que esperas.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 03/02/2010, 21:03
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con consulta Update

Cita:
Iniciado por David Ver Mensaje
$code no existe en el ámbito de la función, debes usar $GLOBALS['code'] para acceder a la variable. De todos modos, asegúrate de que realmente tiene el valor que esperas.
A ver, ¿coloco $GLOBALS['code'] en la función o en EditArticle.template.php?, porque he tratado de todas las formas, fíjate, lo último que he hecho es mostrar el id en un textfield y me la muestra correctamente, el text field se llama aID y en la funcion la llamo asi:

Código PHP:
Ver original
  1. function Save2_Article()
  2. {
  3.     require_once(dirname(__FILE__) .'/DbData.php');
  4.    
  5.     $titulo = $_POST['Titulo'];
  6.     $seccion = $_POST['seccion'];
  7.     $estado = $_POST['estado'];
  8.     $autor = $_POST['Autor'];
  9.     $cuerpo = $_POST['elm1'];
  10.     $fecha = date('Y-m-d H:i:s');
  11.     $no = $_POST['aID'];
  12.    
  13.     $query = "UPDATE articulos SET title = '".$titulo."', cat_id = '".$seccion."', st_id = '".$estado."', autor = '".$autor."', body = '".$cuerpo."', editado = '".$fecha."' WHERE id = '".$no."'";
  14.    
  15.     if (mysql_query($query))
  16.     {
  17.         Print "EL artículo se actuazó correctamente!";
  18.     } else {
  19.         print mysql_error();
  20.     }
  21. }

ella me dice que grabó pero sigue sin actualizar, caray, esto me va volver loco
  #11 (permalink)  
Antiguo 03/02/2010, 21:07
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con consulta Update

En lugar de usar el valor de retorno de mysql_query() para saber si el registro fue actualizado debes usar mysql_affected_rows:
http://www.php.net/manual/en/functio...ected-rows.php

Por cierto, no necesitas usar comillas en el id siendo este un campo numérico.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 03/02/2010, 21:11
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con consulta Update

Cita:
Iniciado por David Ver Mensaje
En lugar de usar el valor de retorno de mysql_query() para saber si el registro fue actualizado debes usar mysql_affected_rows:
[url]http://www.php.net/manual/en/function.mysql-affected-rows.php[/url]

Por cierto, no necesitas usar comillas en el id siendo este un campo numérico.
Hola David, si le quito las comillas mira lo que obtengo:

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
  #13 (permalink)  
Antiguo 03/02/2010, 21:16
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Problema con consulta Update

La razón de eso error ya te expliqué. No estás recuperando ningún valor para el ID, y las comilllas no te van a solucionar el problema mientras no tengas el ID que quieres actualizar.

Todavía no entiendo, ¿qué página está procesando el formulario? (me refiero a la página, la URL que se muestra en el navegador, no el archivo en sí que se puede usar mediante include)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 03/02/2010, 21:28
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con consulta Update

Cita:
Iniciado por David Ver Mensaje
La razón de eso error ya te expliqué. No estás recuperando ningún valor para el ID, y las comilllas no te van a solucionar el problema mientras no tengas el ID que quieres actualizar.

Todavía no entiendo, ¿qué página está procesando el formulario? (me refiero a la página, la URL que se muestra en el navegador, no el archivo en sí que se puede usar mediante include)
Tengo dos achivos Functions.php y EditArticle.template.php el formulario está en ésta última, o sea, esa es la que procesa el form, lo último que hice fue colocar el id en un Text Field, para así obviar obtener el valor desde el link, ahora, en Funtionc.php está la función que menciono más arriba, ahora trato de obtener el valor del Text Field que siempre tiene el id correcto, pero desde la funcion no logro capturar el valor del text field que se llama aID si lo demás lo captura, pos no lo entiendo
  #15 (permalink)  
Antiguo 03/02/2010, 21:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con consulta Update

Lo que pasa es que si ves estas llamando a index.php, si rediriges a EditArticle.template.php pierdes esos valores, tienes que pasarlos ya sea por GET o por una sesión antes de redirigir.

Saludos.
  #16 (permalink)  
Antiguo 03/02/2010, 21:59
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con consulta Update

Cita:
Iniciado por GatorV Ver Mensaje
Lo que pasa es que si ves estas llamando a index.php, si rediriges a EditArticle.template.php pierdes esos valores, tienes que pasarlos ya sea por GET o por una sesión antes de redirigir.

Saludos.
Los valores no se pierden porque todos se cargan en textfields, lo raro es que solamente el Text Field del id no me lo jala si todos los demás sí, eso es lo que me tiene atónito
  #17 (permalink)  
Antiguo 03/02/2010, 22:17
Avatar de Fleon  
Fecha de Ingreso: febrero-2010
Mensajes: 138
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con consulta Update

Ya pude resolver, gracias al cielo, el asunto quedo así:

Código PHP:
Ver original
  1. function Save2_Article()
  2. {
  3.     require_once(dirname(__FILE__) .'/DbData.php');
  4.    
  5.     $titulo = $_POST['Titulo'];
  6.     $seccion = $_POST['seccion'];
  7.     $estado = $_POST['estado'];
  8.     $autor = $_POST['Autor'];
  9.     $cuerpo = $_POST['elm1'];
  10.     $fecha = date('Y-m-d H:i:s');
  11.     if (isset($_POST['code'])) $no = (int) $_POST['code'];
  12.    
  13.     $query = "UPDATE articulos SET title = '$titulo', cat_id = '$seccion', st_id = '$estado', autor = '$autor', body = '$cuerpo', editado = '$fecha' WHERE id = $no";
  14.    
  15.     if (mysql_query($query))
  16.     {
  17.         echo $query;
  18.         Print "EL artículo se actuazó correctamente, se afectaron ".mysql_affected_rows()." articulos";
  19.     } else {
  20.         echo $query;
  21.         print mysql_error();
  22.     }
  23. }

Gracias a todos por su tiempo y perdonen la molestia.

Saludos.

Etiquetas: 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 07:16.