Foros del Web » Programando para Internet » PHP »

Procesar registros de formulario

Estas en el tema de Procesar registros de formulario en el foro de PHP en Foros del Web. Hola a todos y de antemano, gracias por la ayuda que me puedan dar. La duda que tengo es la siguiente: Necesito recorrer un formulario ...
  #1 (permalink)  
Antiguo 20/09/2004, 11:19
 
Fecha de Ingreso: julio-2004
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Procesar registros de formulario

Hola a todos y de antemano, gracias por la ayuda que me puedan dar.

La duda que tengo es la siguiente:
Necesito recorrer un formulario donde tengo una tabla (o grilla) con datos de contratos y un boton de radio que me indica que acción debo realizar (renovar o caducar el contrato). Para cada contrato de la tabla, y de acuerdo al botón que esté marcado, es la acción que voy a realizar.
Alguien podría indicarme como recorro los registros y ejecuto la acción solicitada para cada uno de ellos?

De antemano, muchas gracias.

Saludos,
hadoli.
Santiago, Chile.
  #2 (permalink)  
Antiguo 21/09/2004, 20:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En principio .. los registros no los recuorres sino lo que tienes que hacer es conseguir el "ID" de tu registro y accion a realizar sobre el de tu formulario.

Los botones de radio debe agruparlos tipo:

Código PHP:
$contador=0;
bucle(){
renovar <input type="radio" name="accion[<? echo $contador ?>]" value="<? echo $row['id'].'_renovar' ?>">

caducar <input type="radio" name="accion[<? echo $contador ?>]" value="<? echo $row['id'].'_caducar' ?>">
$contador++;
}
Para saber la acción que pertenece cada ID de registro (tu identificador) .. le concateno un texto que identifica con formato própio (separado por _ del ID) que acción corresponde.

En tu script PHP ... recibiras un array en "accion" la cual puedes leer con un bucle foreach() y aplicar un explode() al valor obtenido para quedarte con la primera parte del separador "_" que será tu ID y la segunda .. la descripción de lo que hay que hacer. En ese punto podras aplicar un condicional (recomendable un switch()) para componer tu sentencia SQL tipo:

UPDATE tabla SET estado_contrato='renovar' WHERE id_contrato='$id'
ó
UPDATE tabla SET estado_contrato='caducar' WHERE id_contrato='$id'

o si hay que hacer otro tipo de sentencia SQL .. ya tienes lo necesario.

Un saludo,

Última edición por Cluster; 21/09/2004 a las 20:29
  #3 (permalink)  
Antiguo 22/09/2004, 08:55
 
Fecha de Ingreso: julio-2004
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Hola Cluster y muchas gracias por la respuesta.
Hay algo que no me queda claro. En el script que pusiste, los valores de los radio vienen de la base de datos? Me da esa impresión por este código
echo $row['id'].'_renovar' .

Si esto es asi, mi caso es distinto, ya que los valores de los botones no los leo de la base. En un principio estos botones no están marcados. El usuario tiene que elegir para cada contrato cual es la acción a realizar. Por eso yo hablaba de "recorrer" los registros para obtener la acción que el usuario ingreso para cada uno.

Como recibo ese array en "accion" que mencionas en tu mensaje?

Gracias.
Saludos, hadoli.
  #4 (permalink)  
Antiguo 22/09/2004, 10:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok, .. pero los "contratos" (los registros esos de "contratos") de donde salen o como los generas? .. son fijos y los haces en HTML sólo? .. los obtienes de una consulta SQL a la BD? ..

Se necesita una referencia de tu registro del "contrato" (un ID lo ideal), para asociarle la "acción" a realizar.

Pon el código que uses en tu formulario mejor para hacer una idea de como trabajas.

Un saludo,
  #5 (permalink)  
Antiguo 22/09/2004, 13:52
 
Fecha de Ingreso: julio-2004
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Hola Cluster.
Si, los registros de contratos son registros que saco de la BD. Leo el código del contrato, que es la llave con la que identifico a cada contrato, además de otros campos.
Este es el código:

Código PHP:
$query_cons_cont_caduca "select a.cod_contrato cod_contrato, b.direccion direccion, a.cod_cliente, c.nombre nombre from contrato a, propiedad b, cliente c where a.estado = '09' and left(a.fecha_termino,7)='$v_periodo' and a.cod_propiedad = b.cod_prop and a.cod_cliente = c.cod_cliente";
$query_limit_cons_cont_caduca sprintf("%s LIMIT %d, %d"$query_cons_cont_caduca$startRow_cons_cont_caduca$maxRows_cons_cont_caduca);
$cons_cont_caduca mysql_query($query_limit_cons_cont_caduca$bd_brousset) or die(mysql_error());
$row_cons_cont_caduca mysql_fetch_assoc($cons_cont_caduca); 
Código HTML:
<table border="1" cellpadding="1">
      <tr>
        <td><div align="center"><strong>C&oacute;digo de Contrato </strong></div></td>
        <td><div align="center"><strong>Propiedad</strong></div></td>
        <td><div align="center"><strong>Arrendatario</strong></div></td>
        <td><div align="center"><strong>Renovar</strong></div></td>
        <td><div align="center"><strong>Caducar</strong></div></td>
      </tr>
      <?php do { 
  $numRegs += 1;
  $nomRadio ="rb_ren_cad_".$numRegs;
  ?>
      <tr>
        <td><div align="center"><?php echo $row_cons_cont_caduca['cod_contrato']; ?></div></td>
        <td><div align="center"><?php echo $row_cons_cont_caduca['direccion']; ?></div></td>
        <td><div align="center"><?php echo $row_cons_cont_caduca['nombre']; ?></div></td>
        <td><div align="center">
          <input name="<?php echo $nomRadio; ?>" type="radio" value="R">
        </div></td>
        <td><div align="center">
          <input name="<?php echo $nomRadio; ?>" type="radio" value="C" >
        </div></td>
      </tr>
      <?php } while ($row_cons_cont_caduca = mysql_fetch_assoc($cons_cont_caduca)); ?>
  </table> 
Por lo que tu me dices, tendría que "pegarle" el código del contrato al botón de radio?

Gracias por la ayuda.
Hadoli.
  #6 (permalink)  
Antiguo 27/09/2004, 13:27
 
Fecha de Ingreso: julio-2004
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Hola Cluster.
Pudiste revisar el código que envié?
Gracias.

Saludos,
hadoli
  #7 (permalink)  
Antiguo 29/09/2004, 10:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Podrías poner el código HTML que se genera (una muestra con algunos registros) para ver que nombre toman esos "radio" (se vería mejor)..

De todas formas .. ya veo que le das un nombre variable al radio del tipo:

rb_ren_cad_1
rb_ren_cad_2
rb_ren_cad_N

y quedan agrupados .. por qué usas el mismo nombre para los dos valores posibles.

Si es así .. tendrás que usar un bucle para generar esos nombres de variables con la técnica de "Variables Variables" tipo

Código PHP:
bucle ()
echo 
$rb_ren_cad_{$contador}; // (creo que es así la sintax .. revisalo en [url]www.php.net[/url])
$contador++;

Un saludo,
  #8 (permalink)  
Antiguo 29/09/2004, 13:53
 
Fecha de Ingreso: julio-2004
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Hola cluster y gracias.

Lo del mismo nombre para los dos valores, es un error, deben ser distintos.
Por lo que tu me dices, esta parte estaría bien como estoy armando los nombres de las variables.
Para leer lo que el usuario ha seleccionado, tendría que hacer el bucle que mostraste en tu ejemplo para leer los valores, cierto?

Gracias.

Saludos,
Hadoli.
  #9 (permalink)  
Antiguo 04/10/2004, 13:31
 
Fecha de Ingreso: julio-2004
Mensajes: 10
Antigüedad: 13 años, 5 meses
Puntos: 0
Cluster,

Hola, yo de nuevo.
Sorry por hinchar tanto con este tema, pero aún no he podido resolverlo.
No he podido pillar como leer lo que el usuario selecciona de los botones de radio.
Gracias por tu ayuda.

Saludos,
hadoli.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:50.