Foros del Web » Programando para Internet » PHP »

Update Multiple

Estas en el tema de Update Multiple en el foro de PHP en Foros del Web. Hola, tal vez este tema sea un poco viejo, pero pues ya estube buscando en el foro y no encontre una opción (o tal vez ...
  #1 (permalink)  
Antiguo 03/02/2011, 13:04
Usuario no validado
 
Fecha de Ingreso: diciembre-2010
Ubicación: Querétaro
Mensajes: 12
Antigüedad: 13 años, 4 meses
Puntos: 0
Exclamación Update Multiple

Hola, tal vez este tema sea un poco viejo, pero pues ya estube buscando en el foro y no encontre una opción (o tal vez no busque muy bien ), bueno el punto es que necesito hacer un update a varios campos con siertas condiciones, en una sola consulta, los datos a actualizar los recivo mediante variables.
Código PHP:
Ver original
  1. <?php
  2. datos tomados del formulario
  3. $idProyecto=$_POST['idProyecto'];
  4. $idValor1=$_POST['idValor1'];  
  5. $idValor2=$_POST['idValor2'];  
  6. $idValor3=$_POST['idValor3'];  
  7. $idValor4=$_POST['idValor4'];  
  8. $idValor5=$_POST['idValor5'];  
  9. $idValor6=$_POST['idValor6'];  
  10. $idValor7=$_POST['idValor7'];  
  11. $idValor8=$_POST['idValor8'];
  12.  
  13. $actualizar ="UPDATE riesgos SET idValor=$idValor1 WHERE idRiesgo=1 and idProyecto=$idProyecto;
  14. UPDATE riesgos SET idValor=$idValor2 WHERE idRiesgo=2 and idProyecto=$idProyecto;
  15. UPDATE riesgos SET idValor=$idValor3 WHERE idRiesgo=3 and idProyecto=$idProyecto;
  16. UPDATE riesgos SET idValor=$idValor4 WHERE idRiesgo=4 and idProyecto=$idProyecto;
  17. UPDATE riesgos SET idValor=$idValor5 WHERE idRiesgo=5 and idProyecto=$idProyecto;
  18. UPDATE riesgos SET idValor=$idValor6 WHERE idRiesgo=6 and idProyecto=$idProyecto;
  19. UPDATE riesgos SET idValor=$idValor7 WHERE idRiesgo=7 and idProyecto=$idProyecto;
  20. UPDATE riesgos SET idValor=$idValor8 WHERE idRiesgo=8 and idProyecto=$idProyecto;";
  21.  
  22.             if (mysql_query($actualizar)){
  23.             $salida = "<h2>Actualizado correctamente</h2>";
  24.             }
  25.             else{
  26.             $salida = "No se ha actualizado. Este es el error: " . mysql_error();
  27.                 }
  28.             echo $salida.
  29. ?>
lo intente de esta forma pero no se actualiza me marca error!! pero si solo pongo un update si lo hace, necesito ayuda graciass!!
  #2 (permalink)  
Antiguo 03/02/2011, 13:10
Avatar de bullarobert  
Fecha de Ingreso: enero-2011
Mensajes: 31
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Update Multiple

lo q podrias hacer es poner un nombre distinto a cada actualizacion algo asi:
Código PHP:
Ver original
  1. $actualizar ="UPDATE riesgos SET idValor=$idValor1 WHERE idRiesgo=1 and idProyecto=$idProyecto";
  2. $actualizar1 = "UPDATE riesgos SET idValor=$idValor2 WHERE idRiesgo=2 and idProyecto=$idProyecto";
  3. $actualizar 2 = "UPDATE riesgos SET idValor=$idValor3 WHERE idRiesgo=3 and idProyecto=$idProyecto";
  4. $actualizar3 = "UPDATE riesgos SET idValor=$idValor4 WHERE idRiesgo=4 and idProyecto=$idProyecto";
  #3 (permalink)  
Antiguo 03/02/2011, 13:13
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Update Multiple

probaste asi??

Código PHP:
$actualizar ="UPDATE riesgos SET idValor='$idValor1' WHERE idRiesgo=1 and idProyecto='$idProyecto';
UPDATE riesgos SET idValor='$idValor2' WHERE idRiesgo=2 and idProyecto='$idProyecto';
UPDATE riesgos SET idValor='$idValor3' WHERE idRiesgo=3 and idProyecto='$idProyecto';
UPDATE riesgos SET idValor='$idValor4' WHERE idRiesgo=4 and idProyecto='$idProyecto';
UPDATE riesgos SET idValor='$idValor5' WHERE idRiesgo=5 and idProyecto='$idProyecto';
UPDATE riesgos SET idValor='$idValor6' WHERE idRiesgo=6 and idProyecto='$idProyecto';
UPDATE riesgos SET idValor='$idValor7' WHERE idRiesgo=7 and idProyecto='$idProyecto';
UPDATE riesgos SET idValor='$idValor8' WHERE idRiesgo=8 and idProyecto='$idProyecto';"

pero nose si se podra hacer varios update en una solo sentencia yo nunca lo e hecho
  #4 (permalink)  
Antiguo 03/02/2011, 13:23
Usuario no validado
 
Fecha de Ingreso: diciembre-2010
Ubicación: Querétaro
Mensajes: 12
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Update Multiple

Si, de esa forma tambien la lo habia probado, pero sigue marcando el error, no se a que se deba, y del modo que dijo bullarobert, como lo relacionaria query?
Código PHP:
Ver original
  1. if (mysql_query($actualizar) and mysql_query($actualizar2)){
  2.             $salida = "<h2>Actualizado correctamente</h2>";
  3.             }
  4.             else{
  5.             $salida = "No se ha actualizado. Este es el error: " . mysql_error();
  6.                 }
  7.             echo $salida.
Pero creo que seria mas complicado, por eso queria saber si existe alguna forma de hacertodos a la vez
  #5 (permalink)  
Antiguo 03/02/2011, 13:31
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Update Multiple

puedes hacerlo mediante un while y utilizar los id autoincrementables, cosa que no te genere conflictos
  #6 (permalink)  
Antiguo 03/02/2011, 13:46
 
Fecha de Ingreso: febrero-2005
Mensajes: 187
Antigüedad: 19 años, 2 meses
Puntos: 2
Respuesta: Update Multiple

Y que te parece una solucion asi:

Código PHP:
      <?php
      
// datos tomados del formulario
      
$idProyecto=$_POST['idProyecto'];

       for(
$i 1$i <= 8$i++){

      
$actualizar ="UPDATE riesgos SET idValor=" $_POST['idValor' $i] . " WHERE idRiesgo=$i and idProyecto=$idProyecto;";

      
mysql_query($actualizar);

       }

      
?>
__________________
___________________________
Hosting y Dominios en colombia
Blog de Cubica

Última edición por jossmorenn; 03/02/2011 a las 13:47 Razón: Error de sintaxis
  #7 (permalink)  
Antiguo 03/02/2011, 14:09
Usuario no validado
 
Fecha de Ingreso: diciembre-2010
Ubicación: Querétaro
Mensajes: 12
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Update Multiple

Hola jossmorenn!!! Pues me parece bien la solución, pero ahora como manejaria los mensajes de salida? !!!

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 12:07.