Php

Estado
Cerrado para nuevas respuestas.

Salome

Lanero Regular
16 Dic 2002
18
Tengo dos formularios...

Formulario No. 1

En este primer formulario, recojo el numero de campos que deseo mostrar en el Formulario No. 2, es decir.. pregunto número de campos a ingresar...

El usuario digita el número por decir 3.

En el Formulario No.2 aparece entonces el número de campos a ingresar y además formo para cada uno un nombre de variable diferente...

<?
$Campo = "Campo_";
$N = 1;
while ($N <= $Numero_campos)
{
echo '<tr><td nowrap>&nbsp;</td>
<td> <input name="'.$Campo.$N.'" type="text" class="resultados" size="20" maxlength="18"></td>
</tr>';
$N ++;
}
?>

Campo_1
Campo_2
Campo_3

Ahora el lio viene cuando quiero ingresar ya los datos a la base de datos.. no sé cuantos campos va a pedir cada usuario, por tanto debo hacer algo.. que me permita introducir uno a uno de una forma muy dimanica.. ya que puede ir de 1 campo a 50 campos por ejemplo...

Un array?.. hay manera de que los nombres o los datos se identifiquen de forma diferente??

Un saludo,:muerto:
 
Te aconsejo algo más sencillo :)

En el formulario, trátalos como una matriz.
<input name="campo[1]" type="text".... >
<input name="campo[2]" type="text".... >
<input name="campo[3]" type="text".... >
<input name="campo[4]" type="text".... >
.
.
.
<input name="campo[n]" type="text".... >


Ahora simplemente cuando entren los datos por POST al script, la variable $_POST['campo'] será una matriz unidimensional con todos los datos recibidos en el formulario (por ejemplo el elemento número uno sería $_POST['campo'][1]).

La parte de recorrer un arrya, puede ser... mmmm se me olvidó :p
haber...


while (list($key,$val) = each($_POST['campo']) {

}

Así recorres el array... espero que me hayas entendido.
 
perdi el dia de ayer con el mismo problema, solo que yo lo hice de otra forma parecida a la de Salome.

cuando vaya a insertar los datos a la base como las variables se llaman:

$campo_1
$campo_2
......etc.

las tratas como una variable variable (mira en el manual de php), o sea:

$a = 35;

$b = 'a';

$$b sera igual a 35.

en tu caso, craerias una variable que tenga el nombre de las variables que recibes,

for ($i=1;$i<=$Numero_campos;$i++)
{
$campo= 'campo_'.$i; //en $i = n $campo es igual a "campo_n"

$r="INSERT INTO mitabla (campo) VALUES ( '".$$campo."')"; //en $i= 1 $$campo es igual a lo que haya en $campo_1
mysql_query($r);
 
Esto fue lo que hice...

<input name="Campo[]" type="text" class="resultados" size="20" maxlength="18">

--------------------------------------------------------------------------------


(el [] indica un indice autonumerico comenzando en 0 .. a cada ejecución se incrementaría una unidad. Puedo usar mis própios indices si lo deseo).

Así en PHP recibo un array de tantos elementos como ese bucle generase. Y los puedo contar como cualquier otro array o incluso usar bucles tipo foreach()

:p
Parece que llegue a la solucion que vos me estabas dando...

Gracias...:D
 
for ($i=1;$i<=$Numero_campos;$i++)
{
$campo= 'campo_'.$i; //en $i = n $campo es igual a "campo_n"

$r="INSERT INTO mitabla (campo) VALUES ( '".$$campo."')"; //en $i= 1 $$campo es igual a lo que haya en $campo_1
mysql_query($r);


:confused:

Porque sera que solo me ingresa la informacion del primero campo... campo_1, pero si hace el ciclo completo...

8(
 
Bueno al parecer el lio era como cree la base de datos.. pero ya todo funciona.. gracias.. adeu
 
Estado
Cerrado para nuevas respuestas.

Los últimos temas