Forums:
Bueno no se si alguien me pueda ayudar con este tema puesto que ya me estoy desesperando...
El punto es el siguiente
Tengo un formulario que se crea dinamicamente, es decir lo campos se llaman iigual pero se diferencian por un indice, de la siguiente manera
tipo_1, nombre_1, apellido_1
tipo_2, nombre_2, apellido_2
.
.
.
tipo_n, nombre_n, apellido_n
El numero de filas que se crearan es dinamico, es decir, nunca se cual sera el valor de n.
Bien el caso es que al igual que se crea el formulario de forma dinamica para guardar los datos en una BD debo hacerlo dinamicamente en base al numero de elementos del formulario, esa parte ya esta solucionada, mi problema esta en que por ejemplo cuando declaro una consulta para MYSQL pues obio debo recoger los valores que lleven
$tipo_1, $nombre_1, $apellido_1
$tipo_2, $nombre_2, $apellido_2
.
.
.
$tipo_n, $nombre_n, $apellido_n
Lo hago con un ciclo que valla de 1 a n, pero mi problema radica en que no puedo hacer que el nombre de la variable funcione, es decir si hago algo como esto
for($i=1; $i<=n; $i++)
{
$q_execute="update zapata set Tipo="."\$Tipo_$i";
}
lo procesa de la siguiente manera(suponiendo ke n vale 4)
"update zapata set Tipo=$Tipo_1"
"update zapata set Tipo=$Tipo_2"
"update zapata set Tipo=$Tipo_3"
"update zapata set Tipo=$Tipo_4"
Es decir, no esta tomando el valo de la variable $Tipo_1, sino como una cadena que contiene "$Tipo_1"
Alguien me podria ayudar para hacer que lo tome como una variable para que asi procese el contenido?
De antemano gracias por tomarse el tiempo de leer este contenido, saludos
Prueba algo como: for($i=1;
Prueba algo como:
for($i=1; $i<=n; $i++)
{
$variable='Tipo_'.$i;
$q_execute="update zapata set Tipo="."\$$variable";
}
Suerte ...
bye
:)
Sin solucion
He intentado tal cual y la salida sigue sin ser procesada como variable sino como cadena
update zapata set Tipo=$Tipo_1
Se usa la siguiente sintaxis:
Para construir sobre la marcha el nombre de una variable, la variable que contiene el nombre de la variable debe usarse con dos signos de dólar. Así:
for($i=1; $i<=10; $i++)
{
$variable='Tipo_'.$i;
$q_execute="update zapata set Tipo=".$$variable;
print "$q_execute\n";
}
O también así:
for($i=1; $i<=10; $i++)
{
$variable='Tipo_'.$i;
$q_execute="update zapata set Tipo={$$variable}";
print "$q_execute\n";
}
Pero tengo algunas objeciones...
perl -e '$x = 2.4; print sprintf("%.0f + %.0f = %.0f\n", $x, $x, $x + $x);'
perl -e '$x = 2.4; print sprintf("%.0f + %.0f = %.0f\n", $x, $x, $x + $x);'
Solucionado
Muchas gracias, me ha servido lo que me has diche. Pero antes de proseguir quisiera aclarar que (fue error mio lo siento, se me paso especificar que el script esta hecho en php no en perl, por lo que entiendo la confusion dad la sintaxis). La solucion fue:
for($i=1; $i<=$cont;$i++)
{
$query = "SHOW COLUMNS FROM zapata";
$execute=mysql_query($query);
$consulta="update zapata set ";
while ($row=mysql_fetch_array($execute))
{
if($row["Field"]!="Id" && $row["Field"]!="Port")
{
$campo="$row[Field]$i";
$consulta=$consulta.$row["Field"]."=".$$campo.",";
}
}
$consulta = substr ($consulta, 0, strlen($consulta) - 1);
$consulta=$consulta." where Id=$Id;";
$q_update=mysql_query($consulta);
}
El script lo que hace es ejecutar la consulta de actualizacion de un formulario el cual esta en base a n campos de la tabla zapata, es decir si la tabla tiene dos campos llamados Tipo y Canal y cuenta con tres tuplas, se generara un formulario con los siguientes elementos(culquier elemento, select, text, radio)
3 elementos llamados Tipo1, Tipo2, Tipo3
3 elementos llamados Canal1, Canal2, Canal3
Dicho script "jala" de la tabla los nombres de los campos, y hace un ciclo hasta el numero de elemtos, construyendo una cadena para ejecutar la consulta de actualizacion de la siguiente manera
$consulta="update zapata set Tipo=VALOR DE TIPO1, Canal=VALOR DE CANAL1;";
$consulta="update zapata set Tipo=VALOR DE TIPO2, Canal=VALOR DE CANAL2;";
$consulta="update zapata set Tipo=VALOR DE TIPO3, Canal=VALOR DE CANAL3;";
Para asi dejar la flexibilidad de agregar o quitar campos de la tabla sin necesidad de modificar el script de modificacion.
Ahora en cuanto a los puntos que me comentas uso las variables globales puesto que estoy haciendo pruebas de manera local, despues cuando subo los scripts al servidor donde trabajar corrigo el script con los POST necesarios.
Por otra parte te sere sincero, no sabia que podia trabajar con conrchetes y hacer ver una variable como un arreglo, pero me ha sido de gran utilidad par aun futuro dicho dato, cosa que te agradezco.
Bueno sin mas que decir espero el script le sirva a alguien si es que pretenden hacer algo parecido, saludos.