Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/11/2016, 16:55
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Actualizar registros varios

Arreglemos primero la tabla:

Quita ese dowhile de ahí no sirve, usa solo while

Código PHP:
Ver original
  1. <table>
  2. <?php
  3. $estados = mysqli_query($dblocal,"SELECT * FROM estados order by id");
  4. $consulta = mysqli_query($dblocal,"SELECT * FROM maquinas WHERE estado = 'Observacion' or estado = 'Micronauta'");
  5.  
  6. $select = "<option value='' selected>Seleccione</option>";
  7. while($arreglo = mysqli_fetch_assoc($estados)){
  8. $select.="<option value='".@$arreglo['id']."'>".@$arreglo['estados']."</option>";  
  9. }
  10. $select.="</select>";
  11.  
  12. while ($resultado = mysqli_fetch_assoc($consulta)){
  13. $select="<select>".$select;
  14.  
  15. echo "<tr>
  16.     <td>".$resultado['maquina']."</td>
  17.     <td>".$resultado['sistema']."</td>
  18.     <td>".$resultado['firmware']."</td>
  19.     <td>".$resultado['estado']."</td>
  20.     <td>".$resultado['fecha']."</td>
  21.     <td>".$resultado['area']."</td>
  22.     <td>".$resultado['observacion']."</td>
  23.     <td>".$select."</td>
  24. </tr>";
  25. }
  26. ?>
  27. </table>

Al los selects dale un nombre asociativo para trabajarlo más tarde:

Código PHP:
Ver original
  1. $select="<select name='estado[]'>".$select

Cambia el dato (<td>) maquina de la tabla por un "td/input" para poder manejarlo, dale readonly para que no se pueda cambiar y nuevamente nombre asociativo para manejarlo luego:

Es decir cambia

Código PHP:
Ver original
  1. <td>".$resultado['maquina']."</td>

Por

Código PHP:
Ver original
  1. <td><input name='maquina[]' type='text' readonly='readonly' value='".$resultado['maquina']."' /></td>

Te debería quedar así:
Código PHP:
Ver original
  1. <table>
  2. <?php
  3. $estados = mysqli_query($dblocal,"SELECT * FROM estados order by id");
  4. $consulta = mysqli_query($dblocal,"SELECT * FROM maquinas WHERE estado = 'Observacion' or estado = 'Micronauta'");
  5.  
  6. $select = "<option value='' selected>Seleccione</option>";
  7. while($arreglo = mysqli_fetch_assoc($estados)){
  8. $select.="<option value='".@$arreglo['id']."'>".@$arreglo['estados']."</option>";  
  9. }
  10. $select.="</select>";
  11.  
  12. while ($resultado = mysqli_fetch_assoc($consulta)){
  13. $select="<select name='estado[]'>".$select;
  14.  
  15. echo "<tr>
  16.     <td><input type='text' name='maquina[]' readonly='readonly' value='".$resultado['maquina']."' /></td>
  17.     <td>".$resultado['sistema']."</td>
  18.     <td>".$resultado['firmware']."</td>
  19.     <td>".$resultado['estado']."</td>
  20.     <td>".$resultado['fecha']."</td>
  21.     <td>".$resultado['area']."</td>
  22.     <td>".$resultado['observacion']."</td>
  23.     <td>".$select."</td>
  24. </tr>";
  25. }
  26. ?>
  27. </table>

Hasta ahí la tabla, ahora la actualización

tienes como base esto:

Código PHP:
Ver original
  1. $btn=$_POST["grabar"];
  2. while($btn=="Grabar"){      
  3.  
  4. }
Ese while es un bucle infinito $btn siempre será "Grabar"

Para arreglar esto usaremos un foreach para recorrer las maquinas que habíamos asociado y por dentro trabajaremos los estados de la misma manera y actualizamos:


Código PHP:
Ver original
  1. $start_estado = -1;
  2. foreach($_POST["maquina"] as $maquina){
  3. $estado = $_POST["estado"][$start_estado++];
  4.  
  5. $consulta = mysqli_query($dblocal,"UPDATE maquinas SET estado='$estado' WHERE maquina='$maquina'");
  6.     if($consulta){
  7.     echo "Estado de la maquina: <b>$maquina</b> cambiado";
  8.     }
  9.     else{
  10.     echo "Error al cambiar estado de la maquina: <b>$maquina</b>";
  11.     }
  12. echo "<br/>";
  13. }

Recordatorio: dale form a toda la tabla para enviar el http post y usa el isset() para controlar:

Código PHP:
Ver original
  1. <form method="post">
  2. <la tabla></la tabla><br/>
  3. <input type="submit" name="grabar" value="Enviar" />
  4. </form>
  5. <?php
  6. if(isset($_POST["grabar"]))
  7. //actualizar...
  8. }
  9. ?>
No se si es lo que quieres, eso es lo que haría yo, hice todo mi esfuerzo jajaja.


Última edición por alvaro_trewhela; 25/11/2016 a las 17:36