Comunidad de diseño web y desarrollo en internet online

Duda sobre nombre de variables autogenerado

Citar            
MensajeEscrito el 12 Dic 2012 03:35 pm
Buenos días,

La verdad es que sé muy poco sobre PHP, uso lo básico para conectarme a MySQL y enviar las variables a flash.

En esta oportunidad necesito hacer algo que escapa de mis conocimientos.

Necesito recibir datos de flash y almacenarlo en variables segun el siguiete tipo:

variable1 = $_POST["variable1"];
variable2 = $_POST["variable2"];
variable3 = $_POST["variable3"];
etc...

Pero necesito hacerlo dentro de un for...

La idea es la siguiente

Código PHP :

for ($i = 1; $i <= 10; $i++) 
{
variable+$i = $_POST["variable"+$i];
}


Sin embargo no me resulta, quisiera saber qué error estoy cometiendo.

Muchas gracias

Por chochito_alegre

51 de clabLevel



Genero:Masculino  

Lima - Perú

firefox
Citar            
MensajeEscrito el 12 Dic 2012 04:33 pm
Lo que quieres hacer no tiene sentido en PHP. Pero por otro lado no necesitas hacer eso puesto que $_POST['loquesea'] ya es una variable, no necesitas pasarla a ninguna otra, puedes trabajar con ella directamente.

Te recomiendo que leas la documentación de array.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 12 Dic 2012 09:15 pm
Gracias por la respuesta DriverOp, sin embargo, me gustaría saber si es posible hacer lo que deseo.
Detallo a continuación el porqué de mi insistencia.

En Flash tengo un DataGrid en el cual es usuario llena la cantidad de registros que él desee (es variable).

Lo que deseo es guardar estos registros en MySQL.

Las columnas del DataGrid son:
Indice / Familia / Tipo / Modelo / Color / Talla / Visa / MasterCard / Efectivo / Resta

Antes de mandarlo a PHP en Flash lo grabo en un vector de la siguiente manera:

En la posición 0 del vector coloco el índice, en la posición 1 coloco la Familia, en la posición 2 coloco el Tipo, y así hasta completar el primer registro, luego, en el caso de exisitir un 2 registro, coloco el índice en la posición 10, la familia en el 11 y así consecutivamente.

Una vez que tengo lleno el vector lo envío a PHP de la siguiente manera:

Código ActionScript :

for (i=0; i<_global.detalle_vec.length/10+1; i++)
{
envio_lv["recIndice"+i] = _global.detalle_vec[0+i*10];
envio_lv["recFamilia"+i] = _global.detalle_vec[1+i*10];
envio_lv["recTipo"+i] = _global.detalle_vec[2+i*10];
envio_lv["recModelo"+i] = _global.detalle_vec[3+i*10];
envio_lv["recColor"+i] = _global.detalle_vec[4+i*10];
envio_lv["recTalla"+i] = _global.detalle_vec[5+i*10];
envio_lv["recVisa"+i] = _global.detalle_vec[6+i*10];
envio_lv["recMasterCard"+i] = _global.detalle_vec[7+i*10];
envio_lv["recEfectivo"+i] = _global.detalle_vec[8+i*10];
envio_lv["recResta"+i] = _global.detalle_vec[9+i*10];
}


De esta manera si hay un registro todas las variables terminarán con el número 0, si hay dos registros: el primer grupo de variables terminara con 0 y el segundo grupo con 1, de ser el caso en que hayan 3 registros: el primer grupo será 0, el segundo será 1 y tercero 2, y así consecutivamente.

Y ahora viene la parte de PHP que es donde no sé como hacerlo.
Lo que deseo hacer es lo siguiente:

Código PHP :

$enlace =  mysql_connect("localhost", "xxxxx", "yyyyyy");
$db = mysql_select_db("sistema", $enlace);
$recCodigo = $_POST["recCodigo"];

for ($i=0; $i<$registros+1; i++)
{
$variable1 = $_POST["recIndice"+$i];
$variable2 = $_POST["recFamilia"+$i];
$variable3 = $_POST["recTipo"+$i];
$variable4 = $_POST["recModelo"+$i];
$variable5 = $_POST["recColor"+$i];
$variable6 = $_POST["recTalla"+$i];
$variable7 = $_POST["recVisa"+$i];
$variable8 = $_POST["recMasterCard"+$i];
$variable9 = $_POST["recEfectivo"+$i];
$variable10 = $_POST["recResta"+$i];
$grabar = "INSERT INTO VEN_DET_RECIBO (cod_recibo, num_linea, cod_familia, cod_tipo, cod_modelo, cod_color, dsc_talla, imp_visa, imp_masterCard, imp_efectivo, imp_resta)";
$grabar .= "VALUES ('$recCodigo', '$variable1', '$variable2', '$variable3', '$variable4', '$variable5', '$variable6', '$variable7', '$variable8', '$variable9', '$variable10')";
$grabacion = mysql_query($grabar,$enlace);
}


Sin embargo no funciona ... quisiera saber donde estoy fallando...

Muchas gracias por la ayuda

Por chochito_alegre

51 de clabLevel



Genero:Masculino  

Lima - Perú

firefox
Citar            
MensajeEscrito el 13 Dic 2012 12:19 pm
Haz un print_r($_POST) en PHP para saber cómo te quedaron organizados los índices de POST. Sospecho que no es como tú crees que sería.

Aún con lo que has explicado sigue sin tener sentido lo que quieres hacer creando variables al vuelo.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 13 Dic 2012 01:47 pm
si usas esto

Código ActionScript :

for (i=0; i<_global.detalle_vec.length/10+1; i++)
{
envio_lv["recIndice"+i] = _global.detalle_vec[0+i*10];
envio_lv["recFamilia"+i] = _global.detalle_vec[1+i*10];
envio_lv["recTipo"+i] = _global.detalle_vec[2+i*10];
envio_lv["recModelo"+i] = _global.detalle_vec[3+i*10];
envio_lv["recColor"+i] = _global.detalle_vec[4+i*10];
envio_lv["recTalla"+i] = _global.detalle_vec[5+i*10];
envio_lv["recVisa"+i] = _global.detalle_vec[6+i*10];
envio_lv["recMasterCard"+i] = _global.detalle_vec[7+i*10];
envio_lv["recEfectivo"+i] = _global.detalle_vec[8+i*10];
envio_lv["recResta"+i] = _global.detalle_vec[9+i*10];
}

por que no usas multiarrays??

Código ActionScript :

for (i=0; i<_global.detalle_vec.length/10+1; i++)
{
envio_lv[i]["recIndice"] = _global.detalle_vec[0+i*10];
envio_lv[i]["recFamilia"] = _global.detalle_vec[1+i*10];
envio_lv[i]["recTipo"] = _global.detalle_vec[2+i*10];
}


asi en php tambien las recuperas

Código PHP :

$_POST[0] ;
//tendra los valores de AS

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 Dic 2012 01:23 am
Hola tuadmin,

La sugerencia que me haces es muy buena! No se me había ocurrido hacerlo con multiarrays... No he probado si funciona _$POST[$i], pero supongo que sí funcionaria...

Buscando por internet encontré la respuesta a lo que estaba buscando, para aquel que tenga la misma duda que yo, dejo a continuación 3 maneras de juntar el nombre de una variable con un numero autogenerado:

$_POST[firstName$k]

$_POST['firstName'.$k]

$_POST["firstName$k"]

Para mi caso particular yo usé la tercera opcion y funcionó excelente.

Saludos

Por chochito_alegre

51 de clabLevel



Genero:Masculino  

Lima - Perú

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.