Foros del Web » Programando para Internet » PHP »

Actualizar muchisimos campos en MySQL usando php

Estas en el tema de Actualizar muchisimos campos en MySQL usando php en el foro de PHP en Foros del Web. Hola, gracias de antemano a quienes me puedan ayudar. Tengo un formulario con 47 campos que leo de una tabla en MySQL, en este formulario ...
  #1 (permalink)  
Antiguo 08/10/2013, 16:05
Avatar de thewayox  
Fecha de Ingreso: diciembre-2004
Ubicación: Guaro, Vzla
Mensajes: 189
Antigüedad: 19 años, 4 meses
Puntos: 3
Actualizar muchisimos campos en MySQL usando php

Hola, gracias de antemano a quienes me puedan ayudar.

Tengo un formulario con 47 campos que leo de una tabla en MySQL, en este formulario edito estos campos.

La pregunta es, existe una forma de actualizarlos que no sea la clasica...

Código PHP:
$consulta="update tabla set campo1='$campo1', campo2='$campo2', campo3='$campo3',...., campo47='$campo47' where id='$id'"
Porque tendría que declarar todas esas variables, hacer ese chorizo gigante y de verdad que me parece que hay una forma mas facil, la cual no conozco aún.

Gracias por su tiempo y respuesta.
__________________
EL PODER CORROMPE, EL PODER ABSOLUTO CORROMPE ABSOLUTO. EL CONOCIMIENTO ES PODER MAS NO ES SABIDURIA, MANEJALO SABIAMENTE O TE CORROMPE
  #2 (permalink)  
Antiguo 08/10/2013, 16:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Actualizar muchisimos campos en MySQL usando php

Para temas de sintaxis SQL te sugiero consultar una referencia de SQL, aunque dudo que exista otra forma menos "clásica".

Ahora, por el tema de PHP definitivamente debes crear las variables sí o sí, que claro podrías crear una función a la cual le pases un array y construya la cadena de SETs por ti.

Pero sólo son ideas, usa tu ingenio.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 08/10/2013, 16:21
Avatar de thewayox  
Fecha de Ingreso: diciembre-2004
Ubicación: Guaro, Vzla
Mensajes: 189
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Actualizar muchisimos campos en MySQL usando php

Uso esto:
Código PHP:
$result=mysql_query("select * from tabla where id='$id'",$link);
while (
$rows mysql_fetch_array($resultMYSQL_ASSOC)) {
    foreach (
$rows as $key => $value) {
        $
$key $value;
    }

Con estas 6 lineas me ahorre el declarar todas las variables, o sea, un trabajon, ademas de que el mismo codigo me servirá para otros formularios de igual (47) o mas campos... Lo unico que tendría que cambiar es la consulta.

Creo que debe haber una forma similar de hacer el update... Esa es mi pregunta.
__________________
EL PODER CORROMPE, EL PODER ABSOLUTO CORROMPE ABSOLUTO. EL CONOCIMIENTO ES PODER MAS NO ES SABIDURIA, MANEJALO SABIAMENTE O TE CORROMPE
  #4 (permalink)  
Antiguo 08/10/2013, 16:38
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Actualizar muchisimos campos en MySQL usando php

Recorre $_POST con un foreach y formas tu consulta. No olvides las validaciones.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 08/10/2013, 17:03
Avatar de thewayox  
Fecha de Ingreso: diciembre-2004
Ubicación: Guaro, Vzla
Mensajes: 189
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Actualizar muchisimos campos en MySQL usando php

Eeehmmm... Disculpa... No entendi :(

Una explicación para alguien nivel basico para mi?
__________________
EL PODER CORROMPE, EL PODER ABSOLUTO CORROMPE ABSOLUTO. EL CONOCIMIENTO ES PODER MAS NO ES SABIDURIA, MANEJALO SABIAMENTE O TE CORROMPE
  #6 (permalink)  
Antiguo 08/10/2013, 18:03
 
Fecha de Ingreso: julio-2013
Mensajes: 309
Antigüedad: 10 años, 9 meses
Puntos: 2
Respuesta: Actualizar muchisimos campos en MySQL usando php

Cita:
Iniciado por thewayox Ver Mensaje
Uso esto:
Código PHP:
$result=mysql_query("select * from tabla where id='$id'",$link);
while (
$rows mysql_fetch_array($resultMYSQL_ASSOC)) {
    foreach (
$rows as $key => $value) {
        $
$key $value;
    }

Con estas 6 lineas me ahorre el declarar todas las variables, o sea, un trabajon, ademas de que el mismo codigo me servirá para otros formularios de igual (47) o mas campos... Lo unico que tendría que cambiar es la consulta.

Creo que debe haber una forma similar de hacer el update... Esa es mi pregunta.
Hola disculpa mi ignorancia soy nuevo en la programacion, pero como dices que ese codigo de ahora poner todas esas variables para que te impriman ¿para eso es?
  #7 (permalink)  
Antiguo 08/10/2013, 18:04
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: Actualizar muchisimos campos en MySQL usando php

Cita:
Iniciado por thewayox Ver Mensaje
Hola, gracias de antemano a quienes me puedan ayudar.

Tengo un formulario con 47 campos que leo de una tabla en MySQL, en este formulario edito estos campos.

La pregunta es, existe una forma de actualizarlos que no sea la clasica...

Código PHP:
$consulta="update tabla set campo1='$campo1', campo2='$campo2', campo3='$campo3',...., campo47='$campo47' where id='$id'"
Porque tendría que declarar todas esas variables, hacer ese chorizo gigante y de verdad que me parece que hay una forma mas facil, la cual no conozco aún.

Gracias por su tiempo y respuesta.
Por lo pronto, NO, el SQL es un lenguaje de consultas declarativo, por lo que para que algo se genere, hay que indicarlo explícitamente.
Por otro lado, 47 campos, en general, hacen pensar en una entidad muy mal definida, con probabilidad de faltas de normalización. Pero es tema de BBDD y no de PHP, por lo que no profundizaré en eso.

Resumiendo: No, no hay forma de evitarlo. El UPDATE tiene una única sintaxis. Como mucho se le agregan condiciones de JOIN, si es que son necesarias, pero los campos a modificar hay que indicarlos expresamente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 08/10/2013, 19:30
Avatar de thewayox  
Fecha de Ingreso: diciembre-2004
Ubicación: Guaro, Vzla
Mensajes: 189
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Actualizar muchisimos campos en MySQL usando php

Hice esto

Código PHP:
$arraypost=array();
foreach(
$_POST as $nombre_campo => $valor){
    
$asignacion "\$" $nombre_campo "='" $valor "';";
    eval(
$asignacion);
    
$arraypost[]="$nombre_campo='$valor'";
}

    
$consulta="UPDATE tabla SET ".implode(', ',$arraypost)." where id='$id'"
Y ya casi me funciona. Solo que hay una variable que no me interesa y se me viene, estoy pensando en eliminarla... Pero bueno, por aqui va la cosa.

Que opinan?
__________________
EL PODER CORROMPE, EL PODER ABSOLUTO CORROMPE ABSOLUTO. EL CONOCIMIENTO ES PODER MAS NO ES SABIDURIA, MANEJALO SABIAMENTE O TE CORROMPE
  #9 (permalink)  
Antiguo 08/10/2013, 19:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Actualizar muchisimos campos en MySQL usando php

Cita:
Iniciado por thewayox Ver Mensaje
[...] Que opinan?
Usar eval() es lo peor que puedes hacer.

Si en lugar de eso usaras campos de formulario de tipo array sería más simple.
Código PHP:
Ver original
  1. <input name="foo[bar]" />
  2. <input name="foo[candy]" />

Y al recibir:
Código PHP:
Ver original
  1. foreach ($_POST['foo'] as $key => $value) // ...

Me parece que es más limpio, además de que sólo recibes los campos agrupados y no todos, y encima te evitas usar eval() que ni al caso va.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 08/10/2013, 20:56
Avatar de thewayox  
Fecha de Ingreso: diciembre-2004
Ubicación: Guaro, Vzla
Mensajes: 189
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Actualizar muchisimos campos en MySQL usando php

Oye pateketrueke... Que buen momento para hacer la pregunta...

Por qué eval() no es recomendado?
__________________
EL PODER CORROMPE, EL PODER ABSOLUTO CORROMPE ABSOLUTO. EL CONOCIMIENTO ES PODER MAS NO ES SABIDURIA, MANEJALO SABIAMENTE O TE CORROMPE
  #11 (permalink)  
Antiguo 08/10/2013, 21: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: Actualizar muchisimos campos en MySQL usando php

Manual de referencia de PHP: http://php.net/manual/es/function.eval.php
Cita:
Precaución

El constructor de lenguaje eval() es muy peligroso porque permite la ejecución de código de PHP arbitrario. Su uso está totalmente desaconsejado. Si se ha verificado cuidadosamente que no existe otra opción que usar este constructor, se ha de poner especial atención en no pasar ninguna información proporcionada por el usuario a esta función sin haberla validado apropiadamente con anterioridad.
¿Queda suficientemente claro?

Los manuales de referencia son el primer sitio donde debes buscar las respuestas...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 08/10/2013, 21:40
Avatar de thewayox  
Fecha de Ingreso: diciembre-2004
Ubicación: Guaro, Vzla
Mensajes: 189
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Actualizar muchisimos campos en MySQL usando php

Claro que allí lo lei, fue el primer lugar donde busque...

Esperaba un ejemplo mas "en criollo"... En otras palabras...
__________________
EL PODER CORROMPE, EL PODER ABSOLUTO CORROMPE ABSOLUTO. EL CONOCIMIENTO ES PODER MAS NO ES SABIDURIA, MANEJALO SABIAMENTE O TE CORROMPE
  #13 (permalink)  
Antiguo 08/10/2013, 22:31
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 10 meses
Puntos: 95
Respuesta: Actualizar muchisimos campos en MySQL usando php

Con respecto a eval(),

como dice el manual: eval te permite ejecutar codigo PHP arbitrario y por lo visto tu MySQL ya es vulnerable a inyecciones SQL y esta mas que claro que no estas validando los datos enviados por el usuario.

Que pasaría si un usuario, en lugar de enviarte

Código PHP:
Ver original
  1. $_POST['nombre'] = "Alan";

Te envía

Código PHP:
Ver original
  1. $_POST['nombre'] = "shell_exec('rm -rf ~')";

y luego utilizas
Código PHP:
Ver original
  1. eval($_POST['nombre']);

Lo que PHP realmente entiende es:

Código PHP:
Ver original
  1. shell_exec('rm -rf ~');

O en otras palabras, PHP le esta diciendo al sistema que borre todos los archivos de la carpeta "home" del usuario que ejecuta php (generalmente el usuario apache en linux).

Por eso es que eval() es un comando peligroso y no se debe usar a menos de que estes 100% seguro de que nadie te va a borrar archivos.
  #14 (permalink)  
Antiguo 08/10/2013, 22:37
Avatar de thewayox  
Fecha de Ingreso: diciembre-2004
Ubicación: Guaro, Vzla
Mensajes: 189
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: Actualizar muchisimos campos en MySQL usando php

Oye Alan, muy agradecido... Eso era lo que necesitaba leer... Así si lo logré entender... Puntos positivos para ti!

Saludos amigo.
__________________
EL PODER CORROMPE, EL PODER ABSOLUTO CORROMPE ABSOLUTO. EL CONOCIMIENTO ES PODER MAS NO ES SABIDURIA, MANEJALO SABIAMENTE O TE CORROMPE

Etiquetas: campos, formulario, mysql, tabla, usando, variable
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 01:38.