PHP:¿Cómo puedo generar menús desplegables(option)de forma fácil y cómoda?
De Foros del Web
Estas funciones son la solución!
Generando desde MySQL: a esta función se le pasa una consulta SQL que traiga el ID y el String de los items guardados en la base. El segundo parámetro es opcional, el cual recibe un ID y si es igual a alguno de los que trae la consulta, imprime la propiedad 'selected' del tag <option>
Código PHP:
<? function listar_items($sql, $marcar = 0) { if ($marcar > 0) { $result = mysql_query($sql); while ($row = mysql_fetch_row($result)) { ?> <option value="<? echo $row[0]; ?>"<? if ($row[0] == $marcar) { echo ' selected'; } ?>><? echo $row[1]; ?></option> <? } } else { $result = mysql_query($sql); while ($row = mysql_fetch_row($result)) { ?> <option value="<? echo $row[0]; ?>"><? echo $row[1]; ?></option> <? } } } ?>
Generando desde Directorio: a esta función se le pasa una ruta en donde haya archivos a listar. El segundo parámetro es opcional, el cual recibe un nombre de archivo y si es igual a alguno de los que está en el directorio, imprime la propiedad 'selected' del tag. Como yapa, los archivos son listados por orden natural <option>[/i]
Código PHP:
<? function listar_archivos($ruta, $marcar = x) { if (is_dir($ruta)) { if ($gd = opendir($ruta)) { while (($archivo = readdir($gd)) !== false) { if ($archivo != '.' && $archivo != '..') { $archivos[] = $archivo; } } closedir($gd); if (natcasesort($archivos)) { if ($marcar != 'x') { foreach ($archivos as $archivo) { if ($archivo == $marcar) { echo '<option value="'.$archivo.'" selected>'.$archivo.'</option>'; } else { echo '<option value="'.$archivo.'">'.$archivo.'</option>'; } } } else { foreach ($archivos as $archivo) { echo '<option value="'.$archivo.'">'.$archivo.'</option>'; } } } } } } ?>
Ejemplos:
Código PHP:
bla bla bla <select name="usuario"> <? listar_items('select idusuario, usuario from usuarios', 1); ?> </select> bla bla bla <select name="foto"> <? listar_archivos('archivos/fotos/', 'sin_imagen.png'); ?> </select> bla bla bla
--nachopro 09 Jun 2006
Este artículo es parte de las FAQs de PHP y el Manual de PHP.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
