Foros del Web » Programando para Internet » PHP »

PHP no actualiza tabla hija

Estas en el tema de PHP no actualiza tabla hija en el foro de PHP en Foros del Web. Buenas, tengo dos tablas, una proveedor y otra articulos, siendo proveedor la tabla padre y articulos la tabla hija. Tengo un formulario para actualizar los ...
  #1 (permalink)  
Antiguo 21/03/2014, 02:40
Avatar de temerariomalaga  
Fecha de Ingreso: marzo-2013
Ubicación: Londres
Mensajes: 156
Antigüedad: 11 años
Puntos: 9
PHP no actualiza tabla hija

Buenas, tengo dos tablas, una proveedor y otra articulos, siendo proveedor la tabla padre y articulos la tabla hija. Tengo un formulario para actualizar los articulos y al ejecutar el update no me actualiza la tabla. Si copio la sentencia y la ejecuto en mysql workbench si me actualiza, en cambio si lo hago por php no. Le he puesto el error al php para que me devuelva si se produjese algún error pero no devuelve nada. Dejo aquí el codigo.
Paso de variables del formulario y llamada a la función
Código PHP:
Ver original
  1. <?php
  2.                 if(isset($_POST['insertar'])){
  3.                     $codigo=$_POST['codigo'];
  4.                     $descripcion=$_POST['descripcion'];
  5.                     $proveedor=$_POST['proveedor'];
  6.                     $pvp=$_POST['pvp'];
  7.                     $modificar=new Articulo;
  8.                     $modificar->updateArticulo($codigo, $descripcion, $proveedor, $pvp);
  9.                 }
  10.             ?>
Esta es la función
Código PHP:
Ver original
  1. function updateArticulo($codigo, $descripcion, $proveedor, $pvp){
  2.             include"conexion.php";
  3.             mysql_connect($servidor, $usuario, $clave)or die (mysql_errno().mysql_error());
  4.             mysql_select_db($basedatos)or die (mysql_errno().mysql_error());
  5.             mysql_query("UPDATE ARTICULOS SET Cod_art='$codigo', Descripcion='$descripcion', id='$proveedor', PVP='$pvp' WHERE Cod_art='$codigo'")or die (mysql_errno().mysql_error());
  6.             mysql_close();
  7.         }
__________________
Málaga Club de Fútbol: Memoria, Compromiso, Fe
  #2 (permalink)  
Antiguo 21/03/2014, 03:02
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: PHP no actualiza tabla hija

¿Entra en la condición?
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 21/03/2014, 03:14
Avatar de temerariomalaga  
Fecha de Ingreso: marzo-2013
Ubicación: Londres
Mensajes: 156
Antigüedad: 11 años
Puntos: 9
Respuesta: PHP no actualiza tabla hija

Yo creo que si entra, si le pongo lo siguiente me imprime OK
Código PHP:
Ver original
  1. $result=mysql_query("UPDATE ARTICULOS SET Cod_art='$codigo', Descripcion='$descripcion', id='$proveedor', PVP='$pvp' WHERE Cod_art='$codigo'")or die (mysql_errno().mysql_error());
  2.             if(mysql_query($result)){
  3.                 echo "Ok";
  4.             }
  5.             else{
  6.                 echo "No";
  7.             }
__________________
Málaga Club de Fútbol: Memoria, Compromiso, Fe
  #4 (permalink)  
Antiguo 21/03/2014, 03:23
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: PHP no actualiza tabla hija

En todo caso sería "if($result)"....

Es raro, que si se conecta, y hace el query.. falle "misteriosamente".

¿Si hay algun error, te sale el warning / fatal error?

EDIT: ¿Qué sentido tiene updatear el $codigo? Si técnicamente, no puedes cambiarlo (es el que usas para el where!).
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 21/03/2014, 03:29
Avatar de temerariomalaga  
Fecha de Ingreso: marzo-2013
Ubicación: Londres
Mensajes: 156
Antigüedad: 11 años
Puntos: 9
Respuesta: PHP no actualiza tabla hija

Cita:
Iniciado por Eleazan Ver Mensaje
En todo caso sería "if($result)"....

Es raro, que si se conecta, y hace el query.. falle "misteriosamente".

¿Si hay algun error, te sale el warning / fatal error?

EDIT: ¿Qué sentido tiene updatear el $codigo? Si técnicamente, no puedes cambiarlo (es el que usas para el where!).
No me sale el warning ni me sale ningun fatal error, todo se ejecuta como si funcionase perfectamente.
Lo de modificar el codigo ha sido una errata mia porque de todas formas no tenia intención de modificarlo.
__________________
Málaga Club de Fútbol: Memoria, Compromiso, Fe
  #6 (permalink)  
Antiguo 21/03/2014, 05:12
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: PHP no actualiza tabla hija

No puedes poner el $result como parámetro de mysql_query(). Esa llamada está esperando una query, no un resource...

Código PHP:
Ver original
  1. $result=mysql_query("UPDATE ARTICULOS SET Cod_art='$codigo', Descripcion='$descripcion', id='$proveedor', PVP='$pvp' WHERE Cod_art='$codigo'")or die (mysql_errno().mysql_error());
  2.             if($result){
  3.                 echo "Ok";
  4.             }
  5.             else{
  6.                 echo "No";
  7.             }
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 21/03/2014, 05:57
Avatar de temerariomalaga  
Fecha de Ingreso: marzo-2013
Ubicación: Londres
Mensajes: 156
Antigüedad: 11 años
Puntos: 9
Respuesta: PHP no actualiza tabla hija

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No puedes poner el $result como parámetro de mysql_query(). Esa llamada está esperando una query, no un resource...

Código PHP:
Ver original
  1. $result=mysql_query("UPDATE ARTICULOS SET Cod_art='$codigo', Descripcion='$descripcion', id='$proveedor', PVP='$pvp' WHERE Cod_art='$codigo'")or die (mysql_errno().mysql_error());
  2.             if($result){
  3.                 echo "Ok";
  4.             }
  5.             else{
  6.                 echo "No";
  7.             }
Yalo modifiqué, que lo copié de una versión anterior, por eso me daba el mensaje de OK.
Ahora a ver cuál puede ser el problema del por qué no me deja modificar la tabla..
En otro proyecto en el que estoy trabajando el PHP si me daba un error, creo que era Foreign Key Constrains. Esta tarde cuando vuelva a casa lo volveré a mirar en el otro proyecto y ya lo publico por si puede tener relación con este problema.
__________________
Málaga Club de Fútbol: Memoria, Compromiso, Fe
  #8 (permalink)  
Antiguo 21/03/2014, 06:28
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: PHP no actualiza tabla hija

Un error de FK se produce cuando:
1) No estás poniendo el dato que corresponde a una FK, y este dato es NOT NULL en esa tabla.
2) Estás poniendo un valor no válido o inexistente FK. Es habitual cuando se ponen espacios vacíos para intentar poner NULL (si la FK lo admite).

Cita:
Si copio la sentencia y la ejecuto en mysql workbench si me actualiza
¿La copias con los valores que ingresaste, o copias la sintaxis y luego en Workbench poner los datos?
Son dos cosas diferentes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 21/03/2014, 09:24
Avatar de temerariomalaga  
Fecha de Ingreso: marzo-2013
Ubicación: Londres
Mensajes: 156
Antigüedad: 11 años
Puntos: 9
Respuesta: PHP no actualiza tabla hija

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿La copias con los valores que ingresaste, o copias la sintaxis y luego en Workbench poner los datos?
Son dos cosas diferentes.
Lo copio tal cual y lo que cambio son las variables de php por el valor que le intento insertar.
Acabo de probar otra vez el otro proyecto que ayer me daba el error de FK y nada más darle a ejecutar funciona. Mi ordenador tiene más fantasmas que el cortijo jurado
__________________
Málaga Club de Fútbol: Memoria, Compromiso, Fe
  #10 (permalink)  
Antiguo 21/03/2014, 09:39
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 11 años, 11 meses
Puntos: 320
Respuesta: PHP no actualiza tabla hija

Prueba esto:


Código PHP:
Ver original
  1. $query = "UPDATE ARTICULOS SET Descripcion='$descripcion',  id='$proveedor',  PVP='$pvp' WHERE Cod_art='$codigo'";
  2. echo('Pruba esta query en el workbench: -> '.$query);
  3. if($result=mysql_query())
  4. {
  5.   echo('Me ejecute correctamente.');
  6. } else {
  7.   echo('Fallo en la consulta ('.mysql_errno().') la posible causa es: '.mysql_error());
  8.   // exit();
  9. }

Como no haces ningun tipo de validacion saneamiento de las variables, quizas alguna de estas tenga alguna comilla simple u otro caracter que rompa la sintaxis SQL.

Lo mejor es usar mysqli y bindear los parametros a una query preparada para evitar estos inconvenientes.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios
  #11 (permalink)  
Antiguo 21/03/2014, 10:31
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: PHP no actualiza tabla hija

Cita:
Iniciado por temerariomalaga Ver Mensaje
Lo copio tal cual y lo que cambio son las variables de php por el valor que le intento insertar.
Acabo de probar otra vez el otro proyecto que ayer me daba el error de FK y nada más darle a ejecutar funciona. Mi ordenador tiene más fantasmas que el cortijo jurado
Bueno, eso es precisamente tu error: Estás alterando la prueba, porque no puedes asegurar en modo alguno que tu acción manual de por resultado una consulta exactamente igual a la creada programáticamente.
¿Que quiero decir con eso?
Que si en tu script alguna de las variables no está bien manejada, entonces el fallo sería por los datos y no por la query. Y eso queda oculto cuando lo haces a mano.
En síntesis: Si no falla la consulta cuando la pruebas a mano, el error no está ni en la base, ni en la consulta. Está en las variables y los datos que contienen.
Y es el error más común de todos.
Una de las preguntas que hay que hacer en este caso es: ¿Alguno de los datos que cargas en tus pruebas contiene apóstrofos?, por ejemplo un nombre como "D'amico", o algo así.
__________________
¿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, 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 23:03.