Tienes muchos errores, primero no le tienes puesto nombre a los inputs text, solo tienes puesto nombre al input hidden, los input hidden no se modifican por el usuario(por eso te envia los mismos datos).
Para que se te envie los datos modificados tienes que nombrar los inputs text como array
Código PHP:
Ver original<?php
include 'conexion.php';
// Creo un array con todas las fincas
$id_expediente = 1;
$resultado3 = $con->query("SELECT * FROM fincas where id_expediente = '$id_expediente'");
$numRows = $resultado3->num_rows;
while ($row = $resultado3->fetch_assoc()) {
$Fincas[] = $row;
}
?>
<form method="POST" action="prueba2.php" enctype="multipart/form-data">
<?php
$wfinca = $Fincas;
for ($x=0;$x<$numRows;$x++) { ?>
<table>
<tr>
<td><input name="fincas[<?php echo $x ?>][id_finca]" class="input" type="text" value="<?php echo $Fincas[$x]['id_finca'] ?>"></td>
</tr>
<tr>
<td><input name="fincas[<?php echo $x ?>][direccion]" class="input" type="text" value="<?php echo $Fincas[$x]['direccion']; ?>" ></td>
</tr>
</table>
<?php
} ?>
<input type="submit">
</form> <?php
?>