Ver Mensaje Individual
  #8 (permalink)  
Antiguo 01/03/2016, 09:09
dune1993
 
Fecha de Ingreso: octubre-2015
Mensajes: 29
Antigüedad: 9 años, 1 mes
Puntos: 0
Pregunta Respuesta: Pasar por POST con un FOREACH

Cita:
Iniciado por xerifandtomas Ver Mensaje
Antes de continuar, estaría bien que trates de explicar que es lo que tratas/quieres enviar desde el formulario.

Si solo necesitas pasar pasar un valor y no un conjunto de valores, no hay ninguna necesidad de utilizar un array y por tanto tampoco de usar foreach.

Ejemplos:
Formulario 1 dato por variable, múltiples variables
Código HTML:
Ver original
  1. <form ... >
  2. <input type="text" name="variable1" />
  3. <input type="text" name="variable2" />
  4. <input type="text" name="variable3" />
  5. Otros input...
El formulario generará 3 variables ($_POST['variable1'],$_POST['variable2'],$_POST['variable3']) y cada una contendrá el valor introducido como un String.

Formulario array de datos
Código HTML:
Ver original
  1. <form ... >
  2. <input type="text" name="variable[]" />
  3. <input type="text" name="variable[]" />
  4. <input type="text" name="variable[]" />
  5. Otros input...
El formulario generará un array ( $_POST['variable'] ) de 3 elementos.
Hola xerifandtomas, mira tengo un formulario que mediante un foreach saco un listado de materiales,cada linea con su id,descripcion... y quiero que en cada linea el usuario modifique el numero de materiales.
Este es el formulario(simplificado)
Código PHP:
Ver original
  1. <form action="guardardevolvermateriales.php" method="POST" >
  2. $sql2 = 'select * from OTMaterialesRetirados WHERE OTID =  ' . $_GET['OTID'].' ';
  3. foreach ($conn->query($sql2) as $row):?>  
  4. <input type="number" readonly name="OTMaterialRetiradoID"   value="<?php echo $row['OTMaterialRetiradoID'];?>"></input>
  5.  
  6. <input type="number" name="CantidadEntregadaAlCliente[]" value="<?php echo FLOOR($row['CantidadEntregadaAlCliente']);?>"></input></td>
  7.  </tr>
  8. <?php endforeach?> 
  9. </form>
y esta es la página de guardado:
Código PHP:
Ver original
  1. ...
  2. $OTMaterialRetiradoID=$_POST['OTMaterialRetiradoID'];
  3. $CantidadEntregadaAlCliente=$_POST['CantidadEntregadaAlCliente'];
  4. foreach($CantidadEntregadaAlCliente as $_entregado)
  5. {  
  6.  $query2 = sprintf("UPDATE OTMaterialesRetirados
  7. SET CantidadEntregadaAlCliente = '" . $_entregado . "' WHERE OTMaterialRetiradoID = '" . $OTMaterialRetiradoID . "'");
  8.  $conn->query($query2);
  9. }
Tal y como está, tan solo me guarda correctamente la ultima linea del listado, no por cada id, nose donde puedo fallar..
Gracias un saludo.