Foros del Web » Programando para Internet » PHP »

Haciendo update multiple, problemitas !!!

Estas en el tema de Haciendo update multiple, problemitas !!! en el foro de PHP en Foros del Web. Hola gente Phpera !!!! Les comento lo que necesito hacer y todavia no me da resultados positivos. Tengo que hacer un update de un conjunto ...
  #1 (permalink)  
Antiguo 24/12/2008, 05:36
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Pregunta Haciendo update multiple, problemitas !!!

Hola gente Phpera !!!!

Les comento lo que necesito hacer y todavia no me da resultados positivos.
Tengo que hacer un update de un conjunto de datos.
Se muestra por pantalla por ejemplo 4 filas con datos
ID - COD_P - COD_MP - CANT
101 - 012 - 005 - 450
102 - 012 - 048 - 560
103 - 012 - 012 - 875
104 - 012 - 001 - 234

Lo que yo hago mediante mi formulario es modificar la CANT, pero al momento de hacer el update lo hago asi (lo muestro completo, como lo tengo en el programa)
Código PHP:
for ($i=1;$i<=$_POST["var_cont"];$i++)
 { 
mysql_query("update sub_materia_prima    set 
                    cod_pieza='$_POST[cod_piezan]',
                    cod_mp='"
.$_POST["code_$i"]."',
                    cant_mp='"
.$_POST["cant_mp_$i"]."',
                    desperdicio='"
.$_POST["desperdicio_$i"]."'
                    where cod_pieza='$_POST[cod_piezan]'"
,$conexion) or
        die(
"Problemas en el select Materia Prima:".mysql_error());} 
El for lo hago desde 1 a var_cont que es la cantidad de filas que se mostraron, en este caso 4.
Lo que me esta pasando es que me guarda solo la ultima en las 4, o sea que cuando las guarda las guarda asi. Si modifique las cantidades y en la ultima puse 345, la salida seria asi:

ID - COD_P - COD_MP - CANT
101 - 012 - 001 - 345
102 - 012 - 001 - 345
103 - 012 - 001 - 345
104 - 012 - 001 - 345

Y otra de las cosas que se puede hacer en el formulario es agregar una fila con mas datos, en ese caso tendria que hacer un update de los 4 anteriores y un insert, eso se puede en la misma consulta ???

Saludos, Ricardo !!!
__________________
Mail: [email protected]

Última edición por colote; 24/12/2008 a las 05:37 Razón: edite
  #2 (permalink)  
Antiguo 24/12/2008, 05:48
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Haciendo update multiple, problemitas !!!

Hola

a parte de que no tienes bien concatenadas dos variables en la query, fijate en ele color de las lineas del code.

creo que no tratas a los datos como arrays, no deberian ser asi:

$_POST["code_$i"]

si no:

$_POST["code"][$i];

Pero para eso se ha de ver como envias los datos desde el form

Un saludo
  #3 (permalink)  
Antiguo 24/12/2008, 06:15
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Haciendo update multiple, problemitas !!!

Siempre los maneje asi :S.

Los datos se envian asi, aca dejo un ejemplo.
Código PHP:
<td><input type="text" size="8" name="cant_mp_<?echo $cmp?>" value="<?echo $resu_smp['cant_mp']?>" /></td>
__________________
Mail: [email protected]
  #4 (permalink)  
Antiguo 24/12/2008, 07:41
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Haciendo update multiple, problemitas !!!

Pues yo envio a si los datos

Código PHP:
echo "<input type=\"text\" name=\"nombre[]\"><br>"
y los recojo a si dentro de un bucle for

Código PHP:
$name $_POST['nombre'][$j]; 
  #5 (permalink)  
Antiguo 24/12/2008, 07:46
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Haciendo update multiple, problemitas !!!

ah okok, gracias igual !!!

Alguna otra idea ?
__________________
Mail: [email protected]
  #6 (permalink)  
Antiguo 24/12/2008, 07:53
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 1 mes
Puntos: 52
Respuesta: Haciendo update multiple, problemitas !!!

Otra idea, no se?

esa es la idea en mi opinion, o si no como lo quieres hacer?

si envias el name del form como un array name="nombre[]" y lo recoges com lo que es un array

$name = $_POST['nombre'][$j];

Un saludo
  #7 (permalink)  
Antiguo 24/12/2008, 12:00
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 9 meses
Puntos: 8
Respuesta: Haciendo update multiple, problemitas !!!

En este caso, el update lo hace bien, el tema es que me actualiza los n registros con la ultima fila que actualizo.
Código PHP:
 for ($i=1;$i<=$_POST["var_cont"];$i++)
   {
 


 
mysql_query("update sub_materia_prima set 
                    cod_mp='"
.$_POST["code_$i"]."',
                    cant_mp='"
.$_POST["cant_mp_$i"]."',
                    desperdicio='"
.$_POST["desperdicio_$i"]."'
                    where cod_pieza='$_POST[cod_piezan]'"
,$conexion) or
        die(
"Problemas en el select Materia Prima:".mysql_error());
 } 

O sea que si tengo
ID - COD_P - COD_MP - CANT
001 - 012 - 005 - 450
002 - 012 - 048 - 560
003 - 012 - 012 - 875
004 - 012 - 001 - 234
y lo actualizo a :

ID - COD_P - COD_MP - CANT
001 - 012 - 003 - 555
002 - 012 - 009 - 458
003 - 012 - 054 - 985
004 - 012 - 018 - 123

me queda asi, cuando lo guardo:
ID - COD_P - COD_MP - CANT
004 - 012 - 018 - 123
004 - 012 - 018 - 123
004 - 012 - 018 - 123
004 - 012 - 018 - 123

Saludos, Ricardo
__________________
Mail: [email protected]
  #8 (permalink)  
Antiguo 24/12/2008, 13:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Haciendo update multiple, problemitas !!!

Creo que al WHERE de tu UPDATE le falta la ID, sin eso, cada update se aplica a todos los registros donde coincida el codigo de pieza.
__________________
- León, Guanajuato
- GV-Foto
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 18:36.