Vamos a aprovechar el código Javascript creado en el post anterior para crear un campo <select> dinámico que contendrá una serie de artículos recuperados de la base de datos. Muy útil para la selección de varios articulos en varias listas desplegables.
Como siempre el código habla por sí solo:
- <!-- Importamos del port de php a javascript>
- <script language="javascript" src="php.js"></script>
- <!-- Importamos el js creado en el post anterior>
- <script language="javascript" src="generar_fila.js"></script>
- <?php
- // Si se ha pulsado el submit, procesamos datos que nos llegan
- if ($_POST)
- {
- echo var_dump($_POST);
- echo "<br/>";
- echo "<br/>";
- echo "<b>Articulos recibidos:</b><br/>";
- for ($i=0;$i<count($_POST['articulos']);$i++)
- echo "id del articulo: " . $_POST['articulos'][$i] . "<br/>";
- echo "<br/>";
- }
- ?>
- <!-- Formulario principal de la pagina -->
- <form name="formulario" id="formulario" action="listas.php" method="post" enctype="multipart/form-data">
- <?php
- // imaginemos que esto lo sacamos de la base de datos,
- // pero ahora vamos a hacer un array de prueba
- $articulos_bd[] = array('id_articulo' => '1', 'nombre' => 'Powered');
- $articulos_bd[] = array('id_articulo' => '2', 'nombre' => 'by');
- $articulos_bd[] = array('id_articulo' => '3', 'nombre' => 'Linux');
- // creamos dos listas, una con los ids de los articulos recogidos presuntamente de la BD ($ids),
- // y otra lista con los nombres de dichos articulos ($array)
- $lista_articulos = '<select id="articulos_0" name="articulos[]">
- <option selected value="">-Seleccione un artículo-</option>';
- $ids[] = "";
- $ids[] = "-Seleccione un artículo-";
- $array[] = "";
- $array[] = "-Seleccione un artículo-";
- // recorremos la lista de articulos del array supuestamente extraido de la BD
- for ($i=0;$i<count($articulos_bd);$i++)
- {
- // montamos un elemento <select></select> normal de HTML con los datos
- // de los articulos recogidos de la BD
- $lista_articulos.='<option id="'.$articulos_bd[$i]['id_articulo'].'" name="'.$articulos_bd[$i]['id_articulo'].'" value="'.$articulos_bd[$i]['id_articulo'].'">'.$articulos_bd[$i]['nombre'].'</option>';
- $ids[] = $articulos_bd[$i]['id_articulo'];
- $array[] = $articulos_bd[$i]['nombre'];
- }
- $lista_articulos.='</select>';
- // creamos un div que contendra los diferentes campos <select></select>
- // con todos los productos y sus datos asociados
- echo '
- <div id="tabla">
- <b>Artículo relacionado:</b>
- '.
- $lista_articulos;
- ?>
- <!-- A la funcion addCampo le voy a pasar el evento originado,
- una cadena con los nombres de los articulos separados por comas,
- y otra cadena con los ids de los articulos tambien separados por comas -->
- <input type="button" class="boton" value="Añadir" onClick="addCampo(event,'<?php echo implode(",", $array); ?>', '<?php echo implode(",", $ids); ?>')" alt="Insertar">
- <!-- continuamos la generacion del formulario -->
- <?php echo '
- </div>
- <br/>
- <input type="submit" value="Submit"/>
- </form>';
Y como siempre, para estas cosas es necesaria una demostración
La lista de referencias utilizadas ha sido la siguiente:
http://www.trans4mind.com/personal_development/JavaScript2/createSelectDynamically.htm
http://www.cristalab.com/tips/32381/subir-multiples-archivos-con-php.html