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.