Problema con variables

marta_imc
09 de Diciembre del 2004
Hola a todos.

Tengo un pequeño problema con als variables
Os explico:

Yo tengo que crear tantos "<input type=text..." como me pida un usuario en un formulario, para hacerlo mas facil lo hago asi:

for($x=0;$x<$cuantos_text;$x++)
{
echo "<input type=text name=txt" . $x . ">" ;
}

Eso me crea tantos select como quiere el usuario y se van llamando seguidos txt0, txt1,txt2 etc.
Que al pasar a otra aprte del formulario pasan a ser variables $txt0,1,2,3 etc.

El problema que tengo es que para la siguiente fase no puedo poder simplemente $txt1. Porque ira variando el numero de txt cada vez.

No se si me estoy explicando bien... jeje
Os lo explicare de esta manera: crear una tabla mysql a traves de formulario.

Tengo que escrivir la sentencia sql y mandarla al servidor.

La estrucutra de la sentencia para crear una tabla es:
CREATE TABLE `nombre_tabla` ( `nombre_campo` VARCHAR (3) NOT NULL )

El nombre_campo es el que hay en los textbox que hago dinamicamente. Peor no simpre son los mismos, asi k cuando lego a la sentencia, tengo que hacer un for() para k me vayan apareciendo los campos
mas o menos asi

$sentenia = "CREATE TABLE `$tabla`( " ;
for($z=0;$z<$cuantos_text;$z++)
{
echo " ` " . $txt$z . " VARCHAR(3) NOT NULL,"
}

NO se si veis qual es el problema, al ser todo dinamico pos tendria que unir el valor de los txt0,1,2,3,4 , peor en vez de numeros, sustituirlo por el $z y el el resultado de conviar $txt con el numerode txt que se da en el for() , fuera el valor del $txt0,1,2,3.

Tendira k juntar estas dos variables:

por ejemplo: $txt1="hola"

$z=1

pues $txt$z--> Hola

Ya se k es muy lioso, peor supongo que sabes a lo que me refiero.

Espero que puedan ayudarme.

Gracias

webmastertgp
09 de Diciembre del 2004
No se si te entendi pero lo que queres crear son campos de la tabla con los nombres que escriban en los campos de texto mas el identificador del numero del campo? si es asi creo que podes concatenar estos dos valores por medio de un punto (.)
$txt.$z--> Hola1

creo si no busca en concatenacion de cadenas.

marta_imc
09 de Diciembre del 2004
Muchas gracias por conestar webmastertgp

Me alegro de que lo hayas ententido a pesar de mi pensa explicacion, jejeje

Lo de concatenar las varaibles con los . ya lo he provado pero no me resulta.

Mira, te pondre este ejemplo que se me acaba de ocurrir:

estos son los valores que ha introducido el usuario en cada textbox de nombres txt+numero

$txt0="campo0";
$txt1="campo1";
$txt2="campo2";

$numero=3;

for($x=0;$x<$numero;$x++)
{

echo $txt.$x ."<br>";

}

el resultado de esto es
0
1
2

Me sale esto pk la variable $txt no tiene valor propio y por lo tanto solo sale la variable $x que es un numero

Como puedo hacer que $txt+$x me lo pille como una sola variable? y el valor de esta sea el que ha puesto el usuario en el textbox?


Gracias por la ayuda, espero que me contesteis prontito

Chao

mick
09 de Diciembre del 2004
El truco para hacer lo que necesitas de forma sencilla, es definir las variables html con corchetes, de ese modo php interpretara directamente todos los datos como un simple array.

for($x=0;$x<$cuantos_text;$x++)
{
echo "<input type=text name=txt[$x]>" ;
}

despues para acceder a los elementos del array basta hacer:

$txt[0]
$txt[1]

y para recorrerlos:

foreach($txt as $index => $value)
{
echo " El elemento $index contiene el valor: $valor";
}

Saludos

webmastertgp
09 de Diciembre del 2004
<?php
$txt[0] = "pablo";
$txt[1] = "javier";
$txt[2] = "fuentes";

$i = 0;

foreach($txt as $v) {
print "$txt[$i].$txt[$i] <BR>"; // la primera sentencia $txt[i] escribe los valores asignados en tus campos
$i++; //la seguna sentencia $txt[$i] escribe el nombre de la variable que viene de tu form
}
?>