Estoy recogiendo de un formulario algunas variables, lo hago por medio de un ciclo FOREACH. Dentro del formulario hay algunas variables que se llenan de manera opcional. A la hora de recoger las variables y validar cuales están llenas y cuales no, tengo problemas en validar las que están vacías.
Aquí el ejemplo del formulario:
Código :
<form action="ingresa_reg.php" method="post" enctype="application/x-www-form-urlencoded" name="formulario"> <input name="nombre_union" type="text" value="nombre_union" /> <input name="nombre_participante" type="text" value="nombre_participante" /> <input name="nombre_participante1" type="text" value="" /> <input name="nombre_participante2" type="text" value="" /> <input name="nombre_participante3" type="text" value="" /> <input name="nombre_participante4" type="text" value="" /> <input name="puesto" type="text" value="puesto" /> <input name="puesto1" type="text" value="puesto1" /> <input name="puesto2" type="text" value="puesto2" /> <input name="puesto3" type="text" value="puesto3" /> <input name="puesto4" type="text" value="puesto4" /> <input name="nombre_acompanante" type="text" value="nombre_acompanante" /> <input name="nombre_acompanante1" type="text" value="nombre_acompanante1" /> <input name="nombre_acompanante2" type="text" value="nombre_acompanante2" /> <input name="nombre_acompanante3" type="text" value="nombre_acompanante3" /> <input name="nombre_acompanante4" type="text" value="nombre_acompanante4" /> <input name="importe_deposito" type="text" value="importe_deposito" /> <input name="fecha_ficha_deposito" type="text" value="fecha_ficha_deposito" /> <input name="hora_ficha_deposito" type="text" value="hora_ficha_deposito" /> <input name="importe_transferencia" type="text" value="importe_transferencia" /> <input name="fecha_transferencia" type="text" value="fecha_transferencia" /> <input name="cuenta_origen" type="text" value="cuenta_origen" /> <input name="referencia_numerica" type="text" value="referencia_numerica" /> <input name="folio_interbancario" type="text" value="folio_interbancario" /> <input name="folio_internet" type="text" value="folio_internet" /> <input name="calle" type="text" value="calle" /> <input name="numero_interior" type="text" value="numero_interior" /> <input name="colonia" type="text" value="colonia" /> <input name="ciudad" type="text" value="ciudad" /> <input name="estado" type="text" value="estado" /> <input name="codigo_postal" type="text" value="codigo_postal" /> <input name="telefono" type="text" value="telefono" /> <input name="fax" type="text" value="fax" /> <input name="email" type="text" value="email" /> <input name="email_union" type="text" value="email_union" /> <input name="rfc_union" type="text" value="rfc_union" /> <input name="enviar" type="submit" value="enviar" /> </form>
Aquí el script que uso:
Código :
foreach($_POST as $nombre_campo => $valor){ if ($valor != "") { $asignacion = "\$" . $nombre_campo . "='" . $valor . "';"; } else { $asignacion = "\$" . $nombre_campo . "='';"; } eval($asignacion); } $querys = "INSERT INTO registros (nombre_union, nombre_participante, puesto, nombre_acompanante, importe_deposito, fecha_ficha_deposito, hora_ficha_deposito, importe_transferencia, fecha_transferencia, cuenta_origen, referencia_numerica, folio_interbancario, folio_internet, calle, numero_interior, colonia, ciudad, estado, codigo_postal, telefono, fax, email, email_union, rfc_union) VALUES ('$nombre_union', '$nombre_participante', '$puesto', '$nombre_acompanante', '$importe_deposito', '$fecha_ficha_deposito', '$hora_ficha_deposito', '$importe_transferencia', '$fecha_transferencia', '$cuenta_origen', '$referencia_numerica', '$folio_interbancario', '$folio_internet', '$calle', '$numero_interior', '$colonia', '$ciudad', '$estado', '$codigo_postal', '$telefono', '$fax', '$email', '$email_union', '$rfc_union')"; for($i=1; $i<5; $i++){ echo "<br>$i.-\n"; echo $nombre_participante.$i."\n"; if(!empty($nombre_participante[$i])) { $querys .= ", ('$nombre_union', '$nombre_participante{$i}', '$puesto{$i}', '$nombre_acompanante{$i}', '$importe_deposito', '$fecha_ficha_deposito', '$hora_ficha_deposito', '$importe_transferencia', '$fecha_transferencia', '$cuenta_origen', '$referencia_numerica', '$folio_interbancario', '$folio_internet', '$calle', '$numero_interior', '$colonia', '$ciudad', '$estado', '$codigo_postal', '$telefono', '$fax', '$email', '$email_union', '$rfc_union')"; } else { $querys .= ""; } }
Como notaras, los campos que son opcionales son los de nombre_participante1, 2, 3, 4. Entonces, si se recibe el formulario con el campo nombre_participante lleno, sólo me creará una fila en mysql, pero si meten datos en los campos opcionales, debería de validar cuántos de esos campos se llenaron y entonces insertar las filas correspondientes.
El problema con este código me parece que es en el ciclo FOR y la validación, para ver si los campos opcionales están llenos. Ya que al ejecutarlo veo que aunque no ingrese datos, aun así me crea las filas.
No sé si estoy concatenando mal la variable autoincrementable $i a la varible del campo. Aquí: for($i=1; $i<5; $i++){ if(!empty($nombre_participante[$i])) {
Ya probé poner $varibale+$i / $variable{$i} / $variable[$i] pero nada.
Gracias de antemano.
Saludos.