Regístrate gratis para participar de los foros, o si ya estás registrado haz login.
| comentario del autor | Jue Jun 05, 2008 5:51 pm | |
|
Voy al grano Tengo un formulario generado en php que devuelve una lista de items con ciertos parametros. alpha1 beta1 gamma1 para el articulo 1 alpha2 beta2 gamma2 para el articulo 2 etcetera basicamente se recuperan por http_post_vars["xxx"] El punto es que quiero usar una funcion que vaya item por item examinando los datos para cargarlos a una base de datos. Las funciones iterativas pueden generar nombres como ${'alpha'.$id} pero no parece que puedan crearse variables de array con este metodo como $'http_get_vars["alpha'.$id'"]' donde id es una variable incrementada para tratar la id del item y cargar los datos de cada item sucesivamente al la DB. Es decir que se pueden crear nombres de variables a partir de cadenas pero no me funciona para arrays asociativos. PHP parece no reconocer la variable creada o llamada dinamicamente. Si alguien me puede dar una pista de como tratar estos datos del formulario. Gracias Slds Luis |
||
| asistió a la solución | Lun Jun 16, 2008 8:12 pm | |
|
En PHP podes enviar variables en forma de "array" la forma de hacerlo es utilizando el mismo nombre en los campos del formulario con el agregado [] por ejemplo <input type="datos[]" value="1"> <input type="datos[]" value="2"> de esta forma en PHP lo vas a recuperar como un array con indices numericos repetitivos: $_POST['datos'][0] => 1 $_POST['datos'][1] => 2 Por supuesto si en vez de eso queres enviar el indice ya sea entero o string lo especificas por ejemplo datos['clave_xx']. Ahh en el ejemplo lo enviamos via post sino sería $_GET... Por otra parte si queres "cargar" el formulario online debes utilizar Ajax, basicamente enviar consultas por cada campo y rellenar con las respuesta. Espero que te ayude, avisame si necesitas algo más, en ese caso no olvides ampliar la consulta. Saludos, Martín |
||
| comentario del autor | Dom Jul 06, 2008 8:25 pm | |
|
availability.$id modifyprice.$id newprice.$id y al ejecutarse, se van generando en html nombres de campos de formulario que seran reenviados a un archivo php para su tratamiento item1 avalability1 modifyprice1 newprice1 item2 avalability2 modifyprice2 newprice2 etc que son los atributos del item.$id el punto es como procesar estos nombres de variables que son reenviados al archivo php en el array asociativo $_post y separalos en una iteracion de manera a que la iteracion vaya actualizando la DB los valores item por item Pense en crear nombres de variables a partir de cadenas generando los nombres con los {} como sigue ${'variable'.$id} como lo detalle anteriormente pero dentro de un array eso no es posible Aqui debajo el codigo PHP que genera los elementos y luego parte del HTML generado PHP PHP PHP PHP <?php function vegshowup( $Id, $Veg_name, $Description, $Unitprice, $Avl) { // Definition of cell for showupbox format and elements l echo ' <tr> <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFF99" style="border-bottom:1px dotted black"> <tr> <td width="300"><table width="100%" border="0" style="vertical-align:top" cellspacing="0" cellpadding="3"> <tr> <td><strong>'.$Id.' '.$Veg_name.'</strong></td> </tr> <tr> <td>Descripcion: <br/><span align="center">'.$Description.'</span></td> </tr> </table></td> <td width="300" style="border-left:1px dotted black ; border-right:1px dotted black"> <table width="100%" border="0" cellspacing="0" cellpadding="4"> <tr> <td><div align="right">Precio actual :</div></td> <td style="font-size:24px" > <div align="center">'.$Unitprice.'</div></td> </tr> <tr> <td><div align="right">Modificar: </div></td> <td > <input type="checkbox" name="modifyprice'.$Id.'" value="checkbox" /> <label>Si: </label></td> </tr> <tr> <td ><div align="right">Nuevo Precio: </div></td> <td><input type="text" name="newprice'.$Id.'" /> </td> </tr> </table></td> <td style="padding:10px"><p align="center">Disponible:'.$Avl.'<br /> <select style="font-size:22px; font-weight:bold" name="availability'.$Id.'"> <option'; if($Avl){echo' selected';} else{};echo'>SI</option> <option'; if(!$Avl){echo' selected';} else{};echo'>NO</option> </select> </label></td> </tr> </table> </td> </tr>'; HTML HTML HTML HTML <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFF99" style="border-bottom:1px dotted black"> <tr> <td width="300"><table width="100%" border="0" style="vertical-align:top" cellspacing="0" cellpadding="3"> <tr> <td><strong>1 Acelga</strong></td> </tr> <tr> <td>Descripcion: <br/><span align="center">Se fracciona por atado de 37 kilos</span></td> </tr> </table></td> <td width="300" style="border-left:1px dotted black ; border-right:1px dotted black"> <table width="100%" border="0" cellspacing="0" cellpadding="4"> <tr> <td><div align="right">Precio actual :</div></td> <td style="font-size:24px" > <div align="center">1</div></td> </tr> <tr> <td><div align="right">Modificar: </div></td> <td > <input type="checkbox" name="modifyprice1" value="checkbox" /> <label>Si: </label></td> </tr> <tr> <td ><div align="right">Nuevo Precio: </div></td> <td><input type="text" name="newprice1" /> </td> </tr> </table></td> <td style="padding:10px"><p align="center">Disponible:0<br /> <select style="font-size:22px; font-weight:bold" name="availability1"> <option>SI</option> <option selected>NO</option> </select> </label></td> </tr> </table> </td> </tr> <tr> <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFF99" style="border-bottom:1px dotted black"> <tr> <td width="300"><table width="100%" border="0" style="vertical-align:top" cellspacing="0" cellpadding="3"> <tr> <td><strong>2 Akusay</strong></td> </tr> <tr> <td>Descripcion: <br/><span align="center">El precio es por kilogramo. Se vende por unidad. Cada unidad pesa entre 500 y 700g.</span></td> </tr> </table></td> <td width="300" style="border-left:1px dotted black ; border-right:1px dotted black"> <table width="100%" border="0" cellspacing="0" cellpadding="4"> <tr> <td><div align="right">Precio actual :</div></td> <td style="font-size:24px" > <div align="center">3</div></td> </tr> <tr> <td><div align="right">Modificar: </div></td> <td > <input type="checkbox" name="modifyprice2" value="checkbox" /> <label>Si: </label></td> </tr> <tr> <td ><div align="right">Nuevo Precio: </div></td> <td><input type="text" name="newprice2" /> </td> </tr> </table></td> <td style="padding:10px"><p align="center">Disponible:1<br /> <select style="font-size:22px; font-weight:bold" name="availability2"> <option selected>SI</option> <option>NO</option> </select> </label></td> </tr> </table> |
||
| solución | Mar Jul 15, 2008 4:06 am | |
|
Te comento de nuevo, porque no puedo ver cual es el impedimento, si generas el html de esta forma: Código:
Vas a obtener un array así: Código:
Por supuesto esto va a ser correcto dependiendo del orden de item, avalability, modifyprice, newprice. En caso de que quieras tener más seguridad y ya que estas creando indices, asignaselo y vas a estar 100% seguro: Código:
Si de todas forma quieres seguir utilizando el método que comentas vas a tener que parsear cada nombre para extraer el indice por ejemplo: Código:
te queda algo como: Código:
La verdad que hay varias forma de armar la respuesta es más a criterio de lo que prefieras. Si no es a lo que te referis amplia un poco más. Saludos, Martín |
||
| comentario del autor | Mie Jul 16, 2008 2:46 pm | |
|
Luego te contare como me fue Slds Luis |
||