Arreglemos primero la tabla:
Quita ese dowhile de ahí no sirve, usa solo while
Código PHP:
Ver original<table>
<?php
$estados = mysqli_query($dblocal,"SELECT * FROM estados order by id"); $consulta = mysqli_query($dblocal,"SELECT * FROM maquinas WHERE estado = 'Observacion' or estado = 'Micronauta'");
$select = "<option value='' selected>Seleccione</option>";
$select.="<option value='".@$arreglo['id']."'>".@$arreglo['estados']."</option>";
}
$select.="</select>";
$select="<select>".$select;
echo "<tr>
<td>".$resultado['maquina']."</td>
<td>".$resultado['sistema']."</td>
<td>".$resultado['firmware']."</td>
<td>".$resultado['estado']."</td>
<td>".$resultado['fecha']."</td>
<td>".$resultado['area']."</td>
<td>".$resultado['observacion']."</td>
<td>".$select."</td>
</tr>";
}
?>
</table>
Al los selects dale un nombre asociativo para trabajarlo más tarde:
Código PHP:
Ver original$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
Por
Código PHP:
Ver original<td><input name='maquina[]' type='text' readonly='readonly' value='".$resultado['maquina']."' /></td>
Te debería quedar así:
Código PHP:
Ver original<table>
<?php
$estados = mysqli_query($dblocal,"SELECT * FROM estados order by id"); $consulta = mysqli_query($dblocal,"SELECT * FROM maquinas WHERE estado = 'Observacion' or estado = 'Micronauta'");
$select = "<option value='' selected>Seleccione</option>";
$select.="<option value='".@$arreglo['id']."'>".@$arreglo['estados']."</option>";
}
$select.="</select>";
$select="<select name='estado[]'>".$select;
echo "<tr>
<td><input type='text' name='maquina[]' readonly='readonly' value='".$resultado['maquina']."' /></td>
<td>".$resultado['sistema']."</td>
<td>".$resultado['firmware']."</td>
<td>".$resultado['estado']."</td>
<td>".$resultado['fecha']."</td>
<td>".$resultado['area']."</td>
<td>".$resultado['observacion']."</td>
<td>".$select."</td>
</tr>";
}
?>
</table>
Hasta ahí la tabla, ahora la actualización
tienes como base esto:
Código PHP:
Ver original$btn=$_POST["grabar"];
while($btn=="Grabar"){
}
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$start_estado = -1;
foreach($_POST["maquina"] as $maquina){
$estado = $_POST["estado"][$start_estado++];
$consulta = mysqli_query($dblocal,"UPDATE maquinas SET estado='$estado' WHERE maquina='$maquina'"); if($consulta){
echo "Estado de la maquina: <b>$maquina</b> cambiado";
}
else{
echo "Error al cambiar estado de la maquina: <b>$maquina</b>";
}
echo "<br/>";
}
Recordatorio: dale form a toda la tabla para enviar el http post y usa el isset() para controlar:
Código PHP:
Ver original<form method="post">
<la tabla></la tabla><br/>
<input type="submit" name="grabar" value="Enviar" />
</form>
<?php
if(isset($_POST["grabar"])) //actualizar...
}
?>
No se si es lo que quieres, eso es lo que haría yo, hice todo mi esfuerzo jajaja.