Foros del Web » Programando para Internet » PHP »

Actualizacion de varios registros a la vez

Estas en el tema de Actualizacion de varios registros a la vez en el foro de PHP en Foros del Web. Hola, estoy desarrallando una página web en php y mysql en la que se pueden elegir varios productos y añadirlos a una tabla para que ...
  #1 (permalink)  
Antiguo 19/06/2003, 14:36
 
Fecha de Ingreso: junio-2003
Mensajes: 24
Antigüedad: 20 años, 10 meses
Puntos: 0
Pregunta Actualizacion de varios registros a la vez

Hola,

estoy desarrallando una página web en php y mysql en la que se pueden elegir varios productos y añadirlos a una tabla para que al finalizar se envien para solicitar un presupuesto, pero me he quedado atrancao.

Cuando ya tiene elegidos todos los produtos los muestro en pantalla con los campos de referencia, descripcion y cantidad. Lo que quiero hacer es que se pueda modificar el campo cantidad de cualquier producto, y que cuando se pulse el boton de enviar actualice la tabla 'presupuesto' con las nuevas cantidades introducidas, pero no se como actualizar todas las cantidades.

Lo que no se exactamente es como pasar los datos de los productos que muestro en pantalla (con la nueva cantidad) al fichero php que tiene que actualizarlos, ya que el numero de productos en pantalla es indeterminado.

Una ayudita seria muy bien recibida porque a mi no se me occure ya nada. Gracias
  #2 (permalink)  
Antiguo 19/06/2003, 15:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Supongo que los campos para modificar son campos text de un formulario, ¿verdad?. Entonces lo que debes hacer es nombrar ese campo como un array en el formulario y luego donde recoges el formulario leer ese array. No se si me he explicado. Probemos un poco de codigo. Suponemos que generas el formulario con un while (ya sea de base de datos o lo que sea). Seria algo asi:
Código PHP:
while (condicion) {
echo 
"los datos a mostrar";
echo 
"campo editable: <input type=\"text\" value=\"valor inicial\" name=\"campo_editable[]\"><br>"

con esto habremos logrado un formulario con X campos text llamados todos campo_editable[].

En la pagina que recibe el formulario solo tienes que recorrer el array. Suponemos que usas $_POST:
Código PHP:
$array_campos_editables=$_POST['campo _editable']; // el nombre en el POST es solo campo_editable sin los corchetes
foreach ($array_campo_editable as $campo) {
// hacemos lo que queremos con este valor
$echo $valor;

Con este metodo dependes de la posicion del campo en el formulario para identificarlo. El array tiene como indices de 0 hasta el numero de campos menos 1.

Otra opcion es utilizar otro campo del registro como indice. Supongamos que el while es de una base de datos y uno de los campos es el ID:
Código PHP:
while ($row=mysql_fetch_array($result)) {
echo 
"los datos a mostrar";
echo 
"campo editable: <input type=\"text\" value=\"valor inicial\" name=\"campo_editable[{$row['ID']}]\"><br>"

Es decir, usamos el campo ID como indice del array. Luego al procesar el formulario podemos acceder a esos indices:
Código PHP:
$array_campos_editables=$_POST['campo _editable']; // el nombre en el POST es solo campo_editable sin los corchetes
foreach ($array_campo_editable as $indice => $campo) {
// hacemos lo que queremos con este valor
echo $indice.' - '.$valor;

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 19/06/2003, 15:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues usa un array en el nombre de tus input del formulario ..

Código PHP:
<?
While ($registro=mysql_fetch_array($consulta)){
   
$id=$registro['id'];
   <
input type="text" name="cantidad[$id]" value="$registro['cantidad']">
}
?>
Falta más código de tu formulario .. pero esa es la idea .. Fijate bien en cantidad[] .. es un array que contendrá tus valores y te hace falta asignarle el ID de ese registro .. para eso uso un el indice asociativo de ese array.

Así que en tu script PHP que procesa ese formulario .. recoges tus ID -> cantidad

Código PHP:
foreach ($cantidad as $id => $unidades){
   echo 
$id."<br>";
   echo 
$unidades;

Con eso ya puedes hacer tu UPDATE a ese ID por ese campo cantidad con el valor de $unidades .. O bien una consulta SQL tipo IN(lista de valores) ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 19/06/2003 a las 15:07
  #4 (permalink)  
Antiguo 20/06/2003, 03:47
 
Fecha de Ingreso: junio-2003
Mensajes: 24
Antigüedad: 20 años, 10 meses
Puntos: 0
Muchas gracias a los 2. Ya he conseguido recibir los valores del formulario en la pagina de actualizacion del presupuesto haciendo lo que me habeis dicho. Ahora voy a ver si actualizo los datos en la tabla, que creo que no tendré ningun problema.
  #5 (permalink)  
Antiguo 18/04/2007, 07:07
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: Actualizacion de varios registros a la vez

Hola, aprovecho este post para plantear una duda, con este codigo que dejo josemi , actualiza de cada registro, solo un campo,
Formulario:
Código PHP:
while (condicion) { 
echo 
"los datos a mostrar"
echo 
"campo editable: <input type=\"text\" value=\"valor inicial\" name=\"campo_editable[]\"><br>" 

Recibimos:
Código PHP:
$array_campos_editables=$_POST['campo _editable']; // el nombre en el POST es solo campo_editable sin los corchetes 
foreach ($array_campo_editable as $indice => $campo) { 
// hacemos lo que queremos con este valor 
echo $indice.' - '.$valor

Ahora supongamos que de cada registro quiero actualizar tres campos, tendria que utilizar tres array, ya que son varios registros?, o hay alguna mejor manera de hacerlo. Agradeceria cualquier sugerencia. Saludos
__________________
->Aprender es un proceso que incluye el error..
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 09:07.