Foros del Web » Programando para Internet » PHP »

Modificar una sentencia UPDATE

Estas en el tema de Modificar una sentencia UPDATE en el foro de PHP en Foros del Web. Hola a todos buscando una solución para realizar un update en varios registros, encontré el siguiente código: Código PHP: <?php // connect to the database and select the correct database mysql_connect ( hostname , ...
  #1 (permalink)  
Antiguo 24/03/2008, 17:23
 
Fecha de Ingreso: junio-2002
Mensajes: 261
Antigüedad: 21 años, 10 meses
Puntos: 0
Modificar una sentencia UPDATE

Hola a todos buscando una solución para realizar un update en varios registros, encontré el siguiente código:

Código PHP:
<?php
// connect to the database and select the correct database
mysql_connect(hostname,username,password);
mysql_select_db(database) or die("Unable to select database");

// find out how many records there are to update
$size count($_POST['bookinfo']);

// start a loop in order to update each record
$i 0;
while (
$i $size) {
// define each variable
$bookinfo$_POST['bookinfo'][$i];
$id $_POST['id'][$i];

// do the update and print out some info just to provide some visual feedback
// you might need to remove the single quotes around the field names, for example bookinfo = '$bookinfo' instead of `bookinfo` = '$bookinfo'
$query "UPDATE table SET `bookinfo` = '$bookinfo' WHERE `id` = '$id' LIMIT 1";
mysql_query($query) or die ("Error in query: $query");
print 
"$bookinfo<br /><br /><em>Updated!</em><br /><br />";
++
$i;
}
mysql_close();
?>
Muy bueno, pero da la casualidad que yo no puedo manejar mis registros a través del $id, por que?...sencillo, mis registros son tomados de manera dinámica y puestos en pantalla, por lo tanto mi código que es el siguiente, creo que necesita una modificación:

Código PHP:
 $size count($_POST['CodPregunta']);
  
$i 0;
  while (
$i $size) {
  
$updateSQL sprintf("UPDATE generar SET Calificacion=%s WHERE Num_Auditoria=%s AND numpregunta=%s",
                       
GetSQLValueString($_POST['CmbCalifica'], "int"),
                       
GetSQLValueString($_POST['numero1'], "int"),
                       
GetSQLValueString($_POST['CodPregunta'], "int"));
  
mysql_select_db($database_Audito$Audito);
  
$Result1 mysql_query($updateSQL$Audito) or die(mysql_error());                       
  ++
$i;
  } 
Voy a jugar usando como contador, el HidenField llamado CodPregunta, pero si se fijan bien...el ciclo no me funcionará ya que siempre estará actualizando el mismo registro (creo yo), ya que no lo muevo hacía el siguiente - es mi pensar - como en el código que encontré que lo mueven a través del $id.

si alguien me puede echar una mano para corregir mi código o indicarme si esta ok o como corregirlo se lo agradeceré.
__________________
Buscando el camino...
  #2 (permalink)  
Antiguo 25/03/2008, 23:13
 
Fecha de Ingreso: junio-2002
Mensajes: 261
Antigüedad: 21 años, 10 meses
Puntos: 0
Re: Modificar una sentencia UPDATE

Alguien tiene idea de lo q solicito?...GRACIAS!!!!
__________________
Buscando el camino...
  #3 (permalink)  
Antiguo 27/03/2008, 21:45
 
Fecha de Ingreso: junio-2002
Mensajes: 261
Antigüedad: 21 años, 10 meses
Puntos: 0
Re: Modificar una sentencia UPDATE

Si alguno se le mide...y desea más información al respecto ...solicitenla...la daré...necesito solucionar esto please.
__________________
Buscando el camino...
  #4 (permalink)  
Antiguo 27/03/2008, 22:54
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: Modificar una sentencia UPDATE

Si tus variables son arreglos tendras que ir moviendote en ellos como:

Código PHP:
foreach($_POST['CodPregunta'] as $pregunta){
     foreach(
$_POST['CmbCalifica'] as $califica){
          foreach(
$_POST['numero1'] as $numero){
               
$updateSQL sprintf("UPDATE generar SET Calificacion=%s WHERE Num_Auditoria=%s AND numpregunta=%s",
                       
GetSQLValueString($califica"int"),
                       
GetSQLValueString($numero"int"),
                       
GetSQLValueString($pregunta"int"));
               
mysql_select_db($database_Audito$Audito);
               
$Result1 mysql_query($updateSQL$Audito) or die(mysql_error());
          }
     }

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 27/03/2008, 23:51
 
Fecha de Ingreso: junio-2002
Mensajes: 261
Antigüedad: 21 años, 10 meses
Puntos: 0
Re: Modificar una sentencia UPDATE

Gracias...Marvin...ya solucione el problema del ciclo...lastimosamente lo hice sin ver tu explicación...la cual ví muy tarde pero te la agradezco.

Ahora tengo la siguiente duda, con respecto a los combobox q utilizo...los cuales son los que poseen las calificaciones a dar a cada pregunta...en el momento en que los trato en el código los uso de la siguiente manera:

Código PHP:
GetSQLValueString($_POST['CmbCalifica'], "int"), 
Pero resulta que al hacerl el submit no se toma el valor seleccionado en cada combo, sino que se almacena un 0 en cada pregunta en la BD, por lo tanto realice el siguiente cambio en el código:

Código PHP:
GetSQLValueString($_POST['CmbCalifica[$i]'], "int"), 
Lo hice dado que utilizo un FOR para realizar el ciclo y la "i" es mi variable de control, pero ahora me almacena un NULL....ya q lo trabaja como un array y es lógico x la forma en q lo uso.

Como puedo trabajar dichos combox y q se almacene el valor seleccionado en cada uno?..

Gracias
__________________
Buscando el camino...
  #6 (permalink)  
Antiguo 28/03/2008, 15:03
 
Fecha de Ingreso: junio-2002
Mensajes: 261
Antigüedad: 21 años, 10 meses
Puntos: 0
Pregunta Re: Modificar una sentencia UPDATE

Calvin, prove tu código a ver si haciendolo como me dijiste funcionaba mejor..y nada antes me genera el siguiente error:

Warning: Invalid argument supplied for foreach() in C:\AppServ\www\Audito\calificarauditorias.php on line 143

El cual hace referencia a la siguiente línea de código que me pasaste:

Código PHP:
foreach($_POST['numero1'] as $numero){ 
Q será?..yo la veo bien...pero PHP no!!!
__________________
Buscando el camino...
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 05:05.