Creo que mi problema es un pco específico.
Lo que quiero lograr es imprimir una serie de opciones guardadas en la base de datos mediante la inicialización de una función.
El código sería este:
Código php:
Ver originalfunction opciones() {
// Utilizo global $sql_c; para que la función pueda conectarse a la base de datos
// mediante una variable inicializada exteriormente
global $sql_c;
// La variable $options no podía usarla fuera de la función hasta que la incializé
// mediante la palabra clave global
global $options;
$opcion = mysql_query("SELECT * FROM opciones", $sql_c) if ($opcion=='') {
// Retorno este array por si no existen entradas en la base de datos
return $options = array('id'=>'0','nombre'=>'Todavía no hay opciones'); }
else {
}
}
Fuera del código PHP sería así:
Código html:
Ver original<select name="opcion" id="opcion"> <?php while (opciones()) : ?>
<option value="<?php echo $options['id']; ?>">
<?php echo $options['nombre']; ?></option> <?php endwhile; ?>
Ahora el problema es que el bucle es infinito y no sé porqué. El bucle imprime unicamente la primer fila de la tabla de la base de datos.
También use print_r(opciones()); por si el array contenía algún error y el resultado fue:
Array ( [0] => 2 [id] => 2 [1] => prueba 1 [nombre] => prueba 1 )
Es decir que el array está perfecto pero el bucle no reconoce nada más allá del primer objeto.
Desde ya muchas gracias.
- SOLUCIÓN -
Ahora que lo solucioné les dejo la solución.
Ahora creé una nueva función a la cual solo hay que pasarle el nombre de la tabla de la que quiero obtener las opciones:
Código PHP:
function lista($tabla) {
global $sql_c; // Hago esto porque mis datos de conexión los tengo fuera de la función
$reg = mysql_query("SELECT * FROM $tabla", $sql_c)
or die ("Problemas al obtener los resultados de la tabla ".$tabla." porque: " . mysql_error());
if ($reg == '') {
echo "<option value=\"0\">Todavía no hay registros</option>
";
}
else {
while ($a = mysql_fetch_array($reg)) :
echo "<option value=\"".$a['id']."\">".$a['nombre']."</option>
";
endwhile;
}
}
Luego para mostrar la lista lo hago de la siguiente manera:
Código HTML:
<select name="opcion" id="opcion">
<?php lista(tabla1); ?> <!-- Aqui logro obtener todos los registros de la tabla1 -->
</select>
![Aplauso](http://static.forosdelweb.com/fdwtheme/images/smilies/aplausos.gif)
Gracias a todos y más a mi porque lo solucioné yo :P
Saludos