Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Trenkos en 30 de Agosto 2015, 04:00
-
Hola, es mi primer post así que corresponde agradecer porque he aprendido lo poco que se con los cursos online de esta web.
Al grano, estoy intentando hacer una query update donde la condicion where es una variable:
mysqli_query($link, "UPDATE servicios SET ser_fecha='$fecha', ser_horai='$horai', ser_horaf='$horaf', ser_codigo='$codigo', ser_contacto='$contacto', ser_problema='$problema', ser_diagnostico='$diagnostico', ser_descripcion='$descripcion', ser_estado='$estado' WHERE id = '$id'");
El problema es que no se ejecuta.
He puesto un echo $id; antes para imprimir el valor de la variable y si tiene valor.
También he probado utilizar un número de id en lugar de la variable para ver si era la sintaxis de la query y en ese caso si funciona.
He probado quitar las comillas a la variable $id pero no da ningún resultado.
Alguna sugerencia?
-
Hola Trenkos!
Bienvenido a los foros, esperamos tu participación.
Hay que tener cuidado con las comillas, apertura-cierre, y problemas de ambiguedad por usar un tipo de comillas que ya esté en uso dentro de la expresión. Una simple comilla puede hacer que falle la consulta.
Se discute un problema parecido en www.aprenderaprogramar.com/foros/index.php?topic=1472 donde se explica como incluir variables
Puedes hacer una consulta más simple para probar primero el balanceo de comillas
mysqli_query($link, "SELECT * FROM servicios WHERE id = '".$id."'");
Una vez compruebes que te funcione, pasarías a hacer la consulta más compleja
Saludos!
-
Hola Cesar, gracias por responder tan pronto.
He comenzado haciendo las pruebas como indicas desde una query muy simple en adelante.
Al final el problema no era las comillas pero igualmente debo agradecer porque con tu consejo he salido del bucle mental que tenía.
No se exactamente el origen del problema pero lo solucioné incluyendo un impute, type hidden con value=$id.
(decidí cambiar el nombre de $id a $idservicio porque me hacía lio)
<input id="idservicio" type="hidden" name="idservicio" value="<?php echo $idservicio;?>"/>
De esta forma cuando hago submit recibo nuevamente el valor idservicio y lo recupero con POST justo antes de la query.
$idservicio = $_POST['idservicio'];
mysqli_query($link, "UPDATE servicios SET ser_fecha='$fecha', ser_horai='$horai', ser_horaf='$horaf', ser_codigo='$codigo', ser_contacto='$contacto', ser_problema='$problema', ser_diagnostico='$diagnostico', ser_descripcion='$descripcion', ser_estado='$estado' WHERE id = '".$idservicio."'");
Mantuve tu "formato" de comillas aunque no lo entiendo. Veo comillas simples y dobles consecutivas y lo de los puntos para concatenar no se que pintan pero funciona.
-
Hola, me alegro de que lo hayas solucionado
El punto es el operador de concatenación como se explica en http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193 en la entrega CU00821B
Pero si te está funcionando el uso de variables dentro de la expresión sin insertarlo igualmente debería funcionarte en el where sin insertarlo, al menos en teoría
$idservicio = $_POST['idservicio'];
mysqli_query($link, "UPDATE servicios SET ser_fecha='$fecha', ser_horai='$horai', ser_horaf='$horaf', ser_codigo='$codigo', ser_contacto='$contacto', ser_problema='$problema', ser_diagnostico='$diagnostico', ser_descripcion='$descripcion', ser_estado='$estado' WHERE id = '$idservicio'");
Saludos
-
Lo del punto lo leí y lo uso mucho a la hora de concatenar HTML y PHP (por ejemplo en un echo "texto".$variable
Dentro de una query nunca lo utilice y de ahi mi confusión.
En lo que estoy trabajando es en poder editar, borrar y cambiar estado a las líneas de un listado. Algo como lo que se explica aqui: (CU01139E) (https://www.aprenderaprogramar.es/index.php?option=com_content&view=article&id=819:ejemplo-innerhtml-javascript-ejercicio-resuelto-modificar-campos-de-tabla-dinamica-editar-filas-cu01139e&catid=78:tutorial-basico-programador-web-javascript-desde-&Itemid=206)
Pero como no tengo ni idea de JS me animé a intentarlo con PHP, a ver si me tiro al agua con JS dentro de poco.
Estoy muy conforme con el resultado gracias.