Tema: FAQ's de PHP
Ver Mensaje Individual
  #164 (permalink)  
Antiguo 09/06/2006, 21:56
Avatar de nachopro
nachopro
 
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 21 años
Puntos: 2
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