Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/09/2011, 10:15
Avatar de javier0730
javier0730
 
Fecha de Ingreso: enero-2010
Ubicación: Jalisco
Mensajes: 82
Antigüedad: 14 años, 3 meses
Puntos: 8
Envio de valores multiples por POST

Buenos días.

Estoy trabajando en un formulario que trabaja con una base de datos de MySQL, en donde esta la tabla Alumnos que tiene un campo llamado Pago y que por defecto esta en NO y necesito que al realizar una consulta a esta tabla se pueda modificar el valor de NO a SI para algunos usuarios, el problema es que al enviar los valores sólo se guardará uno y no todos lo que se hayan cambiado.

Dejo el código para explicarme mejor.

El siguiente código se conecta a la base de datos y obtiene todos los registros de la tabla Alumnos.
Código PHP:
Ver original
  1. <?php require_once('Connections/Conectar.php');
  2.     mysql_select_db($database_PreRegistro, $PreRegistro);
  3.    
  4.     $query_ConsultaAlumnos = "SELECT * FROM alumnos ORDER BY matricula";
  5.     $ConsultaAlumnos = mysql_query($query_ConsultaAlumnos, $PreRegistro) or die(mysql_error());
  6.     $row_ConsultaAlumnos = mysql_fetch_assoc($ConsultaAlumnos);
  7.     $totalRows_ConsultaAlumnos = mysql_num_rows($ConsultaAlumnos);
  8. ?>


El siguiente código tiene una estructura Do-While que muestra cada uno de los registros.
Código HTML:
Ver original
  1. <form id="form1" name="form1" method="post" action="desbloquea.php">
  2.   <?php do { ?>
  3.            
  4.             <table>
  5.               <tr>
  6.                 <td width="100" align="center"> <div class="Estilo12"> Matricula </div> </td>
  7.                 <td width="100" align="center"> <div class="Estilo12"> Referencia </div> </td>
  8.                 <td width="400" align="center"> <div class="Estilo12"> Nombre </div> </td>
  9.                 <td width="150" align="center"> <div class="Estilo12"> Pago realizado </div> </td>
  10.                 <td width="150" align="center"> <div class="Estilo12"> Debloquear </div> </td>
  11.               </tr>
  12.              
  13.               <tr>
  14.                 <td width="100" align="center"> <input type="image" name="matricula" id="matricula" value="<?php echo $row_ConsultaAlumnos['matricula']; ?>" >  </td>
  15.                 <td width="100" align="center"> <input type="image" name="referencia" id="referencia" value="<?php echo $row_ConsultaAlumnos['referencia']; ?>" > </td>
  16.                 <td width="400" align="center"> <input type="image" name="nombre" id="nombre" value="<?php echo $row_ConsultaAlumnos['nombre']; ?>" > </td>
  17.                 <td width="150" align="center"> <input type="image" name="pago_val_actual" id="pago_val_actual" value="<?php echo $row_ConsultaAlumnos['pago']; ?>" > </td>
  18.                 <td width="150" align="center">
  19.                   <input type="Radio" name="pago_val_nuevo" value="NO"checked>NO
  20.                   <input type="Radio" name="pago_val_nuevo" value="SI">SI
  21.                 </td>
  22.               </tr>
  23.             </table>
  24.             <br />
  25.             <br />
  26.    
  27.     <?php } while ($row_ConsultaAlumnos = mysql_fetch_assoc($ConsultaAlumnos)); ?></form>

Noten que en el tipo del input he puesto imágen, esto para que los valores no aparezcan en cuadros de texto, ni en botones.

Estos datos se envian por método POST al archivo desbloquea.php y en este lo que hago es recuperar los valores así:
Código PHP:
Ver original
  1. <?php
  2.  $Matricula = $_POST["matricula"];
  3.  $Referencia = $_POST["referencia"];
  4.  $Nombre = $_POST["nombre"];
  5.  $Pago_act = $_POST["pago_val_actual"];
  6.  $Pago_nuev = $_POST["pago_val_nuevo"];
  7. ?>

Posteriormente actualizo la base de datos en los registros que tengan como valor en el campo $pago_nuev == "SI"

Código PHP:
Ver original
  1. if ($Pago_nuev == "SI")
  2. {
  3.     require_once('Connections/Conectar.php');
  4.     mysql_select_db($database_PreRegistro, $PreRegistro);
  5.  
  6.     $query_ConsultaAlumnos = "SELECT * FROM alumnos WHERE matricula = '$Matricula' AND referencia = '$Referencia' ";
  7.    
  8.     $ConsultaAlumnos = mysql_query($query_ConsultaAlumnos, $PreRegistro2012) or die(mysql_error());
  9.  
  10.     $row_ConsultaAlumnos = mysql_fetch_assoc($ConsultaAlumnos);
  11.     $totalRows_ConsultaAlumnos = mysql_num_rows($ConsultaAlumnos);
  12.  
  13.     $strqry = 'UPDATE `alumnos` SET `pago` = \''.$Pago_nuev.'\'  WHERE matricula = \''.$Matricula.'\' AND referencia = \''.$Referencia.'\'  AND nombre = \''.$Nombre.'\' AND pago = \''.$Pago_act.'\';';
  14.  
  15.     $qry = mysql_query ($strqry);
  16. }

Lo que deseo es que todos los registros que se marquen con SI en la columna Desbloquear se envien y cambien el valor que esta en NO en la base de datos del campo pago a SI.

Si se cambia un solo registro si funciona, pero cuando son varios los valores, pues ya no lo hace porque el input type tiene el mismo nombre en todos los casos y pues al recuperarlo lo hará solo para uno.

Existe un método que me permita realizar el proceso que deseo?

Muchas gracias.