Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] modificar campos formulario php

Estas en el tema de modificar campos formulario php en el foro de PHP en Foros del Web. He creado un formulario en php y, en caso de que la información esté ya insertada, otro de modificación de los datos. Funciona todo bien, ...
  #1 (permalink)  
Antiguo 28/07/2014, 05:48
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
modificar campos formulario php

He creado un formulario en php y, en caso de que la información esté ya insertada, otro de modificación de los datos. Funciona todo bien, el problema es que si solo modifico uno de los campos, al aparecer los demás cuadros de texto en blanco, en la BBDD mysql, me inserta campos vacíos, borrando por tanto toda la información guardada la primera vez que accedo al formulario...

Lo que me gustaría saber es, cómo puedo modificar tan sólo los campos que yo elijo, sin que se modifiquen los que quiero que permanezcan.

El código que uso para modificar es:

Código PHP:
Ver original
  1. $campo1 = mysql_query("UPDATE info_users SET nombre_de_la_empresa = '$nombre' where Id = '$v1' ");

y así sucesivamente para cada uno de los campos que forman parte del formulario.

Si me podeis dar alguna pista os lo agradecería.

Un saludo.
  #2 (permalink)  
Antiguo 28/07/2014, 05:55
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 8 meses
Puntos: 67
Respuesta: modificar campos formulario php

Tienes que asignarle mediante value="" el campo rellenado actual que esta en la DB para asi si no haces ningun cambio se asigna el que ya esta insertado.

Saludos.
  #3 (permalink)  
Antiguo 28/07/2014, 07:27
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: modificar campos formulario php

he probado a meter el value detrás del where (pero no se si es eso a lo que te refieres...) y me da error. A qué te refieres con el campo relleno actual? pongo value en todos los campos del php?

Gracias!
  #4 (permalink)  
Antiguo 28/07/2014, 07:36
 
Fecha de Ingreso: julio-2014
Ubicación: Holanda
Mensajes: 27
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: modificar campos formulario php

¿Cuando muestras el formulario de modificación rellenas los campos o los dejas vacios?
  #5 (permalink)  
Antiguo 28/07/2014, 07:52
Avatar de MaNuX0218  
Fecha de Ingreso: marzo-2014
Mensajes: 787
Antigüedad: 10 años, 8 meses
Puntos: 67
Respuesta: modificar campos formulario php

Me refiero a que en el formulario deve estar rellenado:

<form ....>

<input name="email" value="AQUI EL DATO DE LA DB PARA QUE SE GUARDE" />

</form>

Saludos.
  #6 (permalink)  
Antiguo 28/07/2014, 08:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: modificar campos formulario php

Cita:
Lo que me gustaría saber es, cómo puedo modificar tan sólo los campos que yo elijo, sin que se modifiquen los que quiero que permanezcan.
Creando dinámicamente la query, de modo de agregar en la misma sólo aquellos campos que hayan sido modificados.
Es una práctica habitual, aunque lleva algo de codificación, y de tiempo.

Algo parecido a esto:
Código PHP:
Ver original
  1. <?php
  2. ...
  3. //capturo las variables enviadas desde el formulario via POST
  4. $dato1=$_POST["dato1"];
  5. $dato2=$_POST["dato2"];
  6. $dato3=$_POST["dato3"];
  7. $id =$_POST["id"];
  8.  
  9. // para verificar si se inserto al menos un SET previo
  10. $flag = 0;
  11.  
  12. $sql="UPDATE tabla SET ";
  13.  
  14. if(isset($dato1) && $dato1 != "")
  15. {
  16.     $sql.="dato1 = '$dato1'";
  17.     $flag = 1;
  18. }
  19. if(isset($dato2) && $dato2 != "")
  20. {
  21.     if($flag ==1) $sql.=", ";
  22.     $sql.="dato2 = '$dato2'";
  23.     $flag = 1;
  24. }
  25. if(isset($dato3) && $dato3 != "")
  26. {
  27.     if($flag ==1) $sql.=", ";
  28.     $sql.="dato3 = '$dato3'";
  29. }
  30.  
  31. $sql.=" WHERE id = '$id'";
  32. ...
  33.  
  34. ?>

Puede hacerse mejor, pero esa es la idea.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 28/07/2014 a las 08:44
  #7 (permalink)  
Antiguo 29/07/2014, 00:47
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: modificar campos formulario php

MaNuX0218, poniendo el value no me sale...no puedo meter un valor fijo en el formulario porque lo que tengo es una interfaz y la información a variando...

robertgt90, cuando modifico, algún campo puede estar en blanco y otros rellenos según las necesidades, de ahí mi problema.

Voy a ponerme con la sugerencia de gnzsoloyo. Muchas gracias a todos!
  #8 (permalink)  
Antiguo 29/07/2014, 01:37
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: modificar campos formulario php

Estoy probando el formulario dinámico y no me ingresa los datos. Explico y muestro mi código a continuación:

Tengo un .html en el que escribo el formulario y un .php al que me lleva el submit de un botón que paso a escribir; lo he hecho ya con la sugerencia de gnzsoloyo pero hay líneas que no se si tengo que añadir o no, por ejemplo: igualar el flag = 1 tras la comprobación dentro del bucle es necesaria en cada if?porque en el código php que me muestras tan sólo aparece en algunos.

Código PHP:
Ver original
  1. //recogemos los valores introducidos en el formulario
  2.  
  3. $nombre = $_POST["nombre_de_la_empresa"];
  4. $contacto = $_POST["persona_de_contacto"];
  5. $telefono = $_POST["telefono"];
  6. $direccion = $_POST["direccion"];
  7. $email = $_POST["email"];
  8. $orientacion = $_POST["orientacion"];
  9. $observaciones = $_POST["observaciones"];
  10.  
  11. $flag = 0;
  12.  
  13. $sql = "UPDATE info_users SET";
  14.  
  15. if(isset($nombre) && $nombre != "")
  16. {
  17.     $sql.="nombre = '$nombre'";
  18.     $flag = 1;
  19. }
  20.  
  21. if(isset($contacto) && $contacto != "")
  22. {
  23.     if($flag == 1) $sql.=",";
  24.     $sql.="contacto = '$contacto'";
  25.     $flag = 1;
  26. }
  27.  
  28. if(isset($telefono) && $telefono != "")
  29. {
  30.     if($flag == 1) $sql.=",";
  31.     $sql.="telefono = '$telefono'";
  32.     $flag = 1;
  33. }
  34.  
  35. if(isset($direccion) && $direccion != "")
  36. {
  37.     if($flag == 1) $sql.=",";
  38.     $sql.="direccion = '$direccion'";
  39.     $flag = 1;
  40. }
  41.  
  42. if(isset($email) && $email != "")
  43. {
  44.     if($flag == 1) $sql.=",";
  45.     $sql.="email = '$email'";
  46.     $flag = 1;
  47. }
  48.  
  49. if(isset($orientacion) && $orientacion != "")
  50. {
  51.     if($flag == 1) $sql.=",";
  52.     $sql.="orientacion = '$orientacion'";
  53.     $flag = 1;
  54. }
  55.  
  56. if(isset($observaciones) && $observaciones != "")
  57. {
  58.     if($flag == 1) $sql.=",";
  59.     $sql.="observaciones = '$observaciones'";
  60.     $flag = 1;
  61. }
  62.  
  63. $sql. = "WHERE Id = '$v1_2'";
  64.  
  65. if ($sql){
  66.     echo "<h4>Campos modificados en la base de datos correctamente.</H4>";
  67.     echo '<H4><a href = "index2.php" style = "text-decoration:none;color:#808080;"> Volver a los dispositivos conectados.</H4></a>';
  68.     echo '<H4><a href = "index3.php" style = "text-decoration:none;color:#808080;"> Volver a la página de herramientas.</H4></a>';
  69. }
  70. else{
  71.     echo "<h4>Error en la modificación del cliente.<h4><br>";
  72.     echo '<H4><a href = "formulario_html.php" style = "text-decoration:none;color:#808080;"> Modificar cliente.</H4></a>';
  73. }

Muchas gracias.
  #9 (permalink)  
Antiguo 29/07/2014, 03:31
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: modificar campos formulario php

Me han comentado que vale con poner en value = "$_POST["nombre_de_la_empresa"]", pero me da fallo, valdría solamente con eso? existe alguna variante?
  #10 (permalink)  
Antiguo 29/07/2014, 04:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: modificar campos formulario php

Cita:
Iniciado por elitown87 Ver Mensaje
Estoy probando el formulario dinámico y no me ingresa los datos. Explico y muestro mi código a continuación:

Tengo un .html en el que escribo el formulario y un .php al que me lleva el submit de un botón que paso a escribir; lo he hecho ya con la sugerencia de gnzsoloyo pero hay líneas que no se si tengo que añadir o no, por ejemplo: igualar el flag = 1 tras la comprobación dentro del bucle es necesaria en cada if?porque en el código php que me muestras tan sólo aparece en algunos.

Código PHP:
Ver original
  1. $sql = "UPDATE info_users SET";
  2.  
  3. if(isset($nombre) && $nombre != "")
  4. {
  5.     $sql.="nombre = '$nombre'";
  6.     $flag = 1;
  7. }
  8.  
  9. if(isset($contacto) && $contacto != "")
  10. {
  11.     if($flag == 1) $sql.=",";
  12.     $sql.="contacto = '$contacto'";
  13.     $flag = 1;
  14. }
  15.  
  16. if(isset($telefono) && $telefono != "")
  17. {
  18.     if($flag == 1) $sql.=",";
  19.     $sql.="telefono = '$telefono'";
  20.     $flag = 1;
  21. }
  22.  
  23. if(isset($direccion) && $direccion != "")
  24. {
  25.     if($flag == 1) $sql.=",";
  26.     $sql.="direccion = '$direccion'";
  27.     $flag = 1;
  28. }
  29.  
  30. if(isset($email) && $email != "")
  31. {
  32.     if($flag == 1) $sql.=",";
  33.     $sql.="email = '$email'";
  34.     $flag = 1;
  35. }
  36.  
  37. if(isset($orientacion) && $orientacion != "")
  38. {
  39.     if($flag == 1) $sql.=",";
  40.     $sql.="orientacion = '$orientacion'";
  41.     $flag = 1;
  42. }
  43.  
  44. if(isset($observaciones) && $observaciones != "")
  45. {
  46.     if($flag == 1) $sql.=",";
  47.     $sql.="observaciones = '$observaciones'";
  48.     $flag = 1;
  49. }
  50.  
  51. $sql. = "WHERE Id = '$v1_2'";

Muchas gracias.
En este bloque estas armando la consulta, pero en ningún momento la mandas a ejecutar. Por tanto la base jamás hace nada ni se entera de nada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 29/07/2014, 05:45
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: modificar campos formulario php

Se me había pasado poner la ejecución, ya que normalmente lo pongo todo junto en una misma línea de código. Este es mi código nuevo (de momento estoy probando sólo con dos campos).

Código PHP:
Ver original
  1. //recogemos los valores introducidos en el formulario
  2.  
  3. $nombre = $_POST["nombre_de_la_empresa"];
  4. $contacto = $_POST["persona_de_contacto"];
  5. $telefono = $_POST["telefono"];
  6. $direccion = $_POST["direccion"];
  7. $email = $_POST["email"];
  8. $orientacion = $_POST["orientacion"];
  9. $observaciones = $_POST["observaciones"];
  10.  
  11. $flag = 0;
  12.  
  13. $sql = "UPDATE info_users SET";
  14.  
  15. if(isset($nombre) && $nombre != "")
  16. {
  17.     $sql.="nombre_de_la_empresa = '$nombre'";
  18.     $flag = 1;
  19. }
  20.  
  21. if(isset($contacto) && $contacto != "")
  22. {
  23.     if($flag == 1) $sql.=",";
  24.     $sql.="persona_de_contacto = '$contacto'";
  25.     $flag = 1;
  26. }
  27.  
  28. $sql. = "WHERE Id = '$v1_2'";
  29.  
  30. $sql2 = mysql_query($sql);  
  31.  
  32. if ($sql2){
  33.     echo "<h4>Campos modificados en la base de datos correctamente.</H4>";
  34.     echo '<H4><a href = "index2.php" style = "text-decoration:none;color:#808080;"> Volver a los dispositivos conectados.</H4></a>';
  35.     echo '<H4><a href = "index3.php" style = "text-decoration:none;color:#808080;"> Volver a la página de herramientas.</H4></a>';
  36. }
  37. else{
  38.     echo "<h4>Error en la modificación del cliente.<h4><br>";
  39.     echo '<H4><a href = "formulario_html.php" style = "text-decoration:none;color:#808080;"> Modificar cliente.</H4></a>';
  40. }

Aún teniendo en cuenta que antes no había puesto la ejecución de la consulta...el primer fallo que me aparece es en la línea del where, diciéndome que no se esperaba un =, no se si algo lo habré escrito mal.

Si quito la línea del where, entra en el último bucle de comprobación y me dice que hay un error en la modificación, no me inserta nada, no funciona el código. ¿Dónde puede estar el problema? Lo que comentaba antes es, si el if($flag==1) y el $flag = 1 hay que ponerlo en cada bucle perteneciente a cada campo, ya que en el código que me sugeriste, aparecen solamente una vez cada una.

Muchas gracias!
  #12 (permalink)  
Antiguo 29/07/2014, 06:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: modificar campos formulario php

Cita:
Aún teniendo en cuenta que antes no había puesto la ejecución de la consulta...el primer fallo que me aparece es en la línea del where, diciéndome que no se esperaba un =, no se si algo lo habré escrito mal.
No es exactamente que hayas escrito algo "mal", sino que no haces comprobaciones de prueba de las cosas que armas, entonces slos errores no son visibles.
Si te fijas con cuidado, podrás ver que la línea inicial de la query es:
Código PHP:
Ver original
  1. $sql = "UPDATE info_users SET";
Luego de eso, cualquiera de las partes que se encadenarán se escriben así:
Código PHP:
Ver original
  1. $sql.="nombre_de_la_empresa = '$nombre'";
Código PHP:
Ver original
  1. $sql.="persona_de_contacto = '$contacto'";
Ahora bien, si yo ejecutase esto:
Código PHP:
Ver original
  1. $sql = "UPDATE info_users SET";
  2. $sql.="nombre_de_la_empresa = 'nombre'";
lo que obtendría sería esto:

Código MySQL:
Ver original
  1. UPDATE info_users SETnombre_de_la_empresa = 'nombre'
¿Ves cómo el SET se ha pegado al nombre de la columna?
Ese es el error.

Lo únic o que debes hacer es poner un espacio posterior al SET o anterior al nombre de la columna. Nada más...

Este tipo de cosas se puede verificar muy fácilmente en la etapa de pruebas: usa un simple echo, y verás si la sintaxis es correcta:
Código PHP:
Ver original
  1. $sql. = "WHERE Id = '$v1_2'";
  2. echo $sql;
  3. $sql2 = mysql_query($sql);

Luego, cuanto te asegures de que todo está OK, lo eliminas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 29/07/2014, 06:57
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: modificar campos formulario php

Vale, entendido, información muy valiosa para mí porque no sabía que podían unirse de esa forma las consultas sql, asiq muchas gracias por ello.

Habiendo corregido todo, el fallo es el mismo...

Parse error: syntax error, unexpected '=' in /opt/lampp/htdocs/Interfaz/modificar.php on line 65

Esa línea es esta:

Código PHP:
Ver original
  1. $sql. = "where Id = '$v1_2'";

la verdad es que no se que pueda estar pasando, debido a ese error no me ejecuta el echo ni nada más q la muestra del fallo
  #14 (permalink)  
Antiguo 29/07/2014, 07:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: modificar campos formulario php

Estás dejando un espacio entre el "." y el "="...

Trata de no hacer Copy+Paste. Es una pésima práctica.

Mira:
Código PHP:
Ver original
  1. $sql = "UPDATE info_users SET ";
  2. $sql.=" nombre_de_la_empresa = 'nombre' ";
  3. $sql.= "WHERE Id = 'v1_2'";
  4. echo $sql;
REsultado:
Código BASH:
Ver original
  1. UPDATE info_users SET nombre_de_la_empresa = 'nombre' WHERE Id = 'v1_2'

Código PHP:
Ver original
  1. $sql = "UPDATE info_users SET";
  2. $sql.="nombre_de_la_empresa = 'nombre'";
  3. $sql. = "WHERE Id = 'v1_2'";
  4. echo $sql;
Resultado:
Código BASH:
Ver original
  1. Parse error:  syntax error, unexpected '=' in ... on line 3
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 30/07/2014, 00:46
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: modificar campos formulario php

No he hecho copypaste, pero suelo colocar espacios entre el código y para verlo con mayor claridad y no sabía que aquí era important eso; ya comenté que no conocía que se pudieran concatenar las consultas. ;)

Lo pruebo, gracias!
  #16 (permalink)  
Antiguo 30/07/2014, 01:21
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: modificar campos formulario php

Perfecto!! Me funciona todo bien, muchas gracias!!!
  #17 (permalink)  
Antiguo 30/07/2014, 02:14
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: modificar campos formulario php

Una cosita para terminar de abusar de tu confianza gnzsoloyo ;)

Tras la consulta anterior, con la que inserto los datos en la tabla info_users, quiero que a su vez el nombre de la empresa se inserte en la tabla dispositivos.

Mi pregunta es si, al hacer una consulta nueva a la anterior, debo poner un 'flag nuevo' en las validaciones o continuar con $flag = 0; .
he probado ambas cosas y no me inserta el campo. Si pudieras echarme un cable te lo agradecería...

Código PHP:
Ver original
  1. $flag2 = 0;
  2.  
  3. $query = "UPDATE dispositivos SET "
  4.  
  5. if(isset($nombre) && $nombre != " ")
  6. {
  7.      $sql.=" nombre_de_la_empresa";
  8.      $flag2 = 1;
  9. }
  10.  
  11. $sql.= " WHERE Id = '$v1_2'";
  #18 (permalink)  
Antiguo 30/07/2014, 03:33
 
Fecha de Ingreso: junio-2014
Mensajes: 101
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: modificar campos formulario php

Listo!! Se me olvidó ejecutar la consulta....

Etiquetas: campos, formulario, modificar, mysql
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 14:07.