PHP - Hacer un UPDATE con valores venidos de un array

   
Vista:

Hacer un UPDATE con valores venidos de un array

Publicado por Esteban (7 intervenciones) el 22/03/2013 04:57:29
Quisiera hacer una consulta

Tengo un formulario que guarda valores en un array. (10 valores)
Para insertar estos valores en mi BD, no tengo problema, utilizo esto

$SQL = "INSERT INTO mitabla (campo1, campo2, campo3) Values ";
for($i=0 ;$i<10; $i++)
$SQL.= '(\''.$campo1[$i].'\',\''.$Campo2[$i].'\',\''.$Campo3[$i].'\'),';

$SQL = rtrim($SQL, ',') ;

Hasta aca funciona perfectamente, Ahora la Consulta es:


Como se hace esto mismo, pero con un UPDATE de los mismos campos?
Estoy haciendo esto, pero no obtengo todos los valores del array solo me modifica el ultimo registro

for($i=0; $i<10; $i++) {
$SQL = "UPDATE mitabla SET Campo1 = '$Campo1[$i]', Campo2 = '$Campo2[$i]', Campo3 = '$Campo3[$i]' WHERE Campo4 = '$Campo4[$i]' ";

Necesito de vuestra experiencia para resolver este acertijo.
Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Hacer un UPDATE con valores venidos de un array

Publicado por xve (5513 intervenciones) el 22/03/2013 08:22:08
Hola Esteban, hasta donde yo se, tienes que hacer tantos updates como necesites, ya que el insert, no tiene condicional, pero el update si...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hacer un UPDATE con valores venidos de un array

Publicado por Esteban (7 intervenciones) el 22/03/2013 14:06:09
Y como hago varios UPDATE de un array, como hago para llamar a cada valor en el orden correcto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Hacer un UPDATE con valores venidos de un array

Publicado por xve (5513 intervenciones) el 22/03/2013 16:19:14
No entiendo esta pregunta... tal y como lo muestras en tu ejemplo, es correcto, no?
1
2
3
4
5
for($i=0; $i<10; $i++) {
    $SQL = "UPDATE mitabla SET Campo1 = '$Campo1[$i]', Campo2 = '$Campo2[$i]', Campo3 = '$Campo3[$i]' WHERE Campo4 = '$Campo4[$i]' ";
    # aqui te falta ejecutar la instruccion contra la base de datos... 
    # que variara dependiendo de como lo hagas... mysql_query($SQL); por ejemplo
}


Si nos puedes comentar con mas detalle...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hacer un UPDATE con valores venidos de un array

Publicado por Esteban pedorrinht@yahoo.com.ar (7 intervenciones) el 22/03/2013 19:56:02
El tema es asi:
Yo tengo un formulario en donde se van cargando valores numericos en 4 campos repetidos en 10 lineas.
A la hora de guardar los valores en la BD no tengo problema. Hago un INSERT
$SQL="NSERT INTo mitabla (Campo1, Campo2, Campo3, Campo4) VALUES "
for($i=0; $i>10; $i++)
$SQL.='(\''.(Campo1[$i],.'\',\''.Campo2[$i].'\',\''.Campo3[$i]).'\'),';
$SQL=rtrim($SQL,',')


Hasta aca funciona perfectamente, pero que pasa cuando el ususario quiere modificar los valores que ya cargo de este mismo formulario.
En est caso debo hacer un UPDATE, por lo caul siguiendo mas o menos el ejemplo que puse del INSERT debería funcionar como lo escribi mas arriba, pero mi sorpresa es que NO FUNCIONA.

En realidad no funciona de la forma que yo quiero, porque la sentencia solo reconoce el ultimo registro, osea la linea 10 del formulario y lo modifica de acuerdo a los nuevos valores que se hayan pasado, pero los nueve registros iniciales los pasa de largo.

Segun me cuentas en tu primera respuesta deberia guardar estos 4 campos en variables por cada linea del formulario
4 Campos x 10 Lineas, son 40 Variables para poder hacer el UPDATE.
De solo pensarlo me duele la cabeza.

No hay otra forma, estas seguro?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hacer un UPDATE con valores venidos de un array

Publicado por Edwin (3 intervenciones) el 25/03/2013 02:28:21
Hola que tal :

Tu tema en si es muy facil, pero veo que tu no estas siguientes el orden de como resolver tu problema, aqui te paso algunos pasos a seguir :

a. Almacenas todos los valores del array en una sola variable.
b. Recorrer el array utilizando cualquier estructura que mejor te convenga : for, while, do while, etc.
c. Realizas una condicional donde verificas que solo realice la sentencia sql, todos los elementos no vacios o que contengan un registro.
d. Dentre del recorrido que haces al array, creas una variable e igualas a una sentencia sql, dependiendo de la que quieres realizar : insert, update, delete, sql.
e. Haces una condicional donde determinas que antes de llegar al ultimo elemento del array le agregue un ; .
e. Despues ejecutas la consulta al servidor para que el recorrido se vaya realizar, en funcion a los elementos del array.
Sigue estos pasos y te tiene que salir cualquier consulta sql dentro del array ya sea que te venga como parametros en la url o bien que captures los elementos de un formulario, eso es opcional pero igual te debe de funcionar.

Cualquier consulta me la haces llegar en todo caso o si prefieres te puedo apoyar con una pequeña colaboracion que realizas, dependiendo de usted.

Me confirmas atravez de un mensaje a mi correo :
edwinbazan_usat1@hotmail.com

o al skype :
edwin-bazan.

Espero tu confirmacion

Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hacer un UPDATE con valores venidos de un array

Publicado por Iván (9 intervenciones) el 29/03/2013 14:05:05
Puedes hacerlo de la siguiente manera (adaptado a tu caso en concreto, claro):
1
2
3
4
5
6
7
8
9
10
11
$limit = 11;
$set = array();
for ($i = 0; $i < $limit; $i++){
    $aux = array();
    for ($j = 1; $j < 4; $j++){
        $aux[]  = 'Campo' . $j =' . mysql_real_escape_string($Campo{$j}[$i]) ;
    }
    $set[] = implode(', ', $aux) . ' WHERE Campo4=' . mysql_real_escape_string($Campo4[$i]);
}
$sql = 'UPDATE NOMBRE_TABLA SET ' . implode(', ', $set);
mysql_query($sql);


Échale un vistazo a este artículo de programación en PHP.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hacer un UPDATE con valores venidos de un array

Publicado por Esteban pedorrinht@yahoo.com.ar (7 intervenciones) el 29/03/2013 15:05:13
Hola Ivan, necesitaría me expliques un poco que es lo que haces con $j, porque no lo entiendo muy bien

1
2
3
4
5
6
7
8
9
10
$limit = 11 ;  //No necesito definir esto porque se que el limite siempre es 10
$set = array() ;
 
for($i=0, $i>10, $i++)
{
  $aux = array() ;
  for($j=0, $j>4, $j++)
  {
    $aux[] = 'Campo' . $j =' . mysql_real_escape_string($Campo{$j}[$i]) ;
  }


A que te refieres con 'Campo' como es lo que deberia poner para que me funcione. porque tengo los siguientes campos para modificar :
AP_Local , Ap_Visita , Comodin
El $j que esta dentro del $Campo esta encerrado entre llaves y el $i entre corchetes, imagino que debe estar bien pero no se porque va de esta forma.

$set[] = implode(', ', $aux) . 'WHERE ID_Apuesta = ' . mysql_real_escape_string($ID_apuesta[$i]) ;
]
$SQL = 'UPDATE Apuestas SET ' . implode(', ', $set) ;
mysql_query($SQL, $cnConex);


Si estos valores no estuvieran en un array, yo haria esto.
$SQL= 'UPDATE apuestas SET AP_local = $AP_Local, AP_Visita = $AP_Visita, Comodin = $Comodin WHERE ID_Apuesta = $ID_Apuesta' ;

Aguardo tu respuesta para poder probarlo
Desde ya muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar