Foros del Web » Programando para Internet » PHP »

Actualizar Tabla desde un while

Estas en el tema de Actualizar Tabla desde un while en el foro de PHP en Foros del Web. Hola a todos bueno primero recojo los datos desde un formulario cuyos campos se generan desde un while. Código PHP: <?php  do {  ?>         <tr>           <td align="center"><span class="Estilo14"> ...
  #1 (permalink)  
Antiguo 22/02/2008, 08:50
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 3 meses
Puntos: 0
Actualizar Tabla desde un while

Hola a todos bueno primero recojo los datos desde un formulario cuyos campos se generan desde un while.

Código PHP:
<?php do { ?>
        <tr>
          <td align="center"><span class="Estilo14"><?php echo $row_facdetalle['descripcion']; ?></span></td>
          <td align="center"><span class="Estilo14"><input name="cantidadrecibida" type="text" size="4" /><input name="id" type="hidden" size="4" value="<?php echo $row_facdetalle['id']; ?>" />
          </span></td>
          <td align="center" class="Estilo14"><?php echo $row_facdetalle['valordia']; ?></td>
          <td width="160" align="center" class="Estilo14"><?php echo $row_facdetalle['descripcion']; ?></td>
        </tr>
        <?php } while ($row_facdetalle mysql_fetch_assoc($facdetalle)); ?>
y ahora recogiendo los campos necesito actualizar una tabla pero no se como poder guardar todos los datos recogidos pues solo me actualiza el ultimo registro.

Gracias no se se si me hago entender si algo me preguntan.
  #2 (permalink)  
Antiguo 22/02/2008, 09:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Actualizar Tabla desde un while

No es tan sencillo como lo planteas, necesitas en alguna parte guardar el ID del row que estas viendo, posteriormente necesitas nombrar tus inputs en forma de arreglo:
Código HTML:
<input name="cantidadrecibida[<?php echo $row_facdetalle['id']; ?>]" type="text" size="4" /> 
Posteriormente en PHP lo recibes así:
Código PHP:
foreach( $_POST['cantidadrecibida'] as $id => $cantidad ) {
           
$sql "UPDATE `tabla` SET `cantidadrecibida`='$cantidad' WHERE `id`='$id' LIMIT 1";
           
mysql_query$sql );

Prueba con algo así.

Saludos.
  #3 (permalink)  
Antiguo 22/02/2008, 09:13
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: Actualizar Tabla desde un while

Algo que podrias hacer, es que podrias concatenar las sentencias sql, separadas por punto y coma [;], y luego solo ejecutas un query, con todo los updates:
Código PHP:
$sql='';
foreach( 
$_POST['cantidadrecibida'] as $id => $cantidad ) {
           
$sql. = "UPDATE `tabla` SET `cantidadrecibida`='$cantidad' WHERE `id`='$id' LIMIT 1";
           
$sql.=';';           

mysql_query($sql); 
...seria algo ventajoso eso...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #4 (permalink)  
Antiguo 22/02/2008, 09:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Actualizar Tabla desde un while

Seria ventajoso, pero no todos los servidores de MySQL tienen habilitado el uso de Querys múltiples, así que si lo hace así, es probable que la sentencia falle.

Saludos.
  #5 (permalink)  
Antiguo 22/02/2008, 09:43
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Re: Actualizar Tabla desde un while

Buen punto [GatorV]...
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #6 (permalink)  
Antiguo 22/02/2008, 09:58
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Actualizar Tabla desde un while

Gracias GatorV y Bellenger pos sus respuestas.
1. Si tenia el ID del row oculto se me olvido publicarlo.

Voy a trabajar con lo que me dijeron y si algo les aviso... Mil Gracias

y algo mas si quiera Insertar un nuevo registro con cada "cantidad recibida" tmb podria utilizar

foreach() Gracias

Por que ya lo tengo asi.

Código PHP:
 <form action="" name="guardar" method="POST">
<?php do { ?>
     
        <tr>
        <td align="center"><span class="Estilo14"><?php echo $row_facdetalle['descripcion']; ?></span></td>
        <td align="center"><span class="Estilo14"><input name="id" type="hidden" value="<?php echo $row_facdetalle['id']; ?>"/>
          <input name="cantdevuelta" type="text" /></span></td>
        <td align="center" class="Estilo14"><?php echo $row_facdetalle['valordia']; ?></td>
        <td align="center" class="Estilo14"><label>
          <input type="submit" name="button" id="button" value="guardar" />
        </label></td>
        </tr>
        <input type="hidden" name="MM_insert" value="guardar" />
     
      <?php } while ($row_facdetalle mysql_fetch_assoc($facdetalle)); ?>
 </form>
y ahora es que recojo los campos del formulario campos que genero con el While y me guarde 1 Registro por dato.

Última edición por Andres_hlan; 22/02/2008 a las 10:08
  #7 (permalink)  
Antiguo 22/02/2008, 10:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Actualizar Tabla desde un while

Así es, en lugar de usar UPDATE usa INSERT para insertar registros.

Saludos.
  #8 (permalink)  
Antiguo 22/02/2008, 10:54
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Actualizar Tabla desde un while

No me da me aparece.
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\serviequipos\php\devolucion.php

aca esta el código del formulario.

Código PHP:
<form>
<?php do { ?>
      
<tr>
     <td align="center"><input name="idarticulo" type="hidden" value="<?php echo $row_facdetalle['id']; ?>"/></td>
    <td><input name="cantdevuelta" type="text" /></td>
</tr>

<?php } while ($row_facdetalle mysql_fetch_assoc($facdetalle)); ?>
</form>
y el codigo que guarda en la Tabla.. el propósito es que guarde un registro por cada Input.

Código PHP:
foreach($_POST['cantdevuelta'] as $idarticulo => $cantdevuelta) {
$sql "INSERT INTO devolucion_detalle (idarticulo,cantdevuelta) VALUES('$idarticulo','$cantdevuelta')"
           
mysql_query($sql);

debe ser algo muy simple pues todavia soy muy novato en php y más sabiendo que nunca había utilizado foreach
  #9 (permalink)  
Antiguo 22/02/2008, 11:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Actualizar Tabla desde un while

Tu problema es en tu tag de <form>, si tu no especificas el método de envío, por defecto envía las variables en el GET, por lo que tienes que cambiarlo a POST.

Saludos.
  #10 (permalink)  
Antiguo 22/02/2008, 13:50
 
Fecha de Ingreso: enero-2008
Mensajes: 60
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Actualizar Tabla desde un while

Cita:
Iniciado por GatorV Ver Mensaje
Tu problema es en tu tag de <form>, si tu no especificas el método de envío, por defecto envía las variables en el GET, por lo que tienes que cambiarlo a POST.

Saludos.
No es eso acabo de colocar el method post y no me funciona y ademas el error me aparece sin que halla mandado el formulario.
  #11 (permalink)  
Antiguo 22/02/2008, 15:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Actualizar Tabla desde un while

Obviamente primero tienes que validar que el formulario se haya enviado para que no se ejecute el código de actualización.

Saludos.
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 03:13.