Tema: Generar menús desplegables HTML
Pregunta: ¿Cómo puedo generar <option>s de forma fácil y cómoda?
Respuesta: 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
espero que les guste