Hoy voy a mostrar como generar un listado dinámico del control select, el combo desplegable, mediante PHP a partir de los datos devueltos por una consulta MySql.
Requisitos previos:
* Conocer como crear el conector $link.
Te dejo el tutorial por si te interesa: Tutorial Conexión a MySql desde PHP
//texto encabezado
echo "<h1>Selecciona una fruta</h1>";
//abrimos el select
//(el size indica el ancho del select)
echo '<select name="frutas" size="5">';
//realizamos la conexión
mysql_conecta($link);
//realizamos la consulta
$respuesta=mysql_query("select fruta_id, fruta_nombre from frutas", $link);
//recorremos los datos
while($fila=mysql_fetch_array($respuesta)){
echo '<option value="'.$fila["fruta_id"].'">
'.$fila["fruta_nombre"].'></option>';
}
//cerramos el select
echo '</select>';











» ideone.com – Compilador online de código multitud de lenguajes de programación
» Librería ADOdb Date Time para manejar fechas sin límites

7 Comentarios
Aunque supongo que se ha obviado por simplificar el código o por problemas de formateado, en mi opinión:
1- No sería mala idea hacer un …” or die(mysql_error())” detrás del query para evitarte problemas…
2- Los elementos estáticos de la página conviene dejarlos fuera de las etiquetas php.
Más o menos así, aunque yo soy más de usar el bucle for en lugar de los while, no se si te parecerá buena idea, tampoco lo he probado… solo lo he remozado como he visto rápidamente.
Lo he intentado pegar… pero blogger no te deja pegar textos formateados, y menos con php
, supongo que por eso no has cumplido mi segunda observación, lo siento!
Saludos!!
Voy a ir respondiendo
1- El or die no lo he puesto nunca ya que a juicio personal no tiene mucho sentido añadir un or die en cada consulta que envio.
Creo que lo ideal sería utilizar un procedimiento encargado de detectar los errores de todo PHP en general o en su defecto hacerlo en la clase/procedimiento dedicado a servir de puente entre el conector mysql y php.
2- En temas tan triviales como el que acontece no veo necesario sacar los elementos fuera, prefiero claridad antes que andar poniendo claves por doquier.
La norma que citas debería aplicarse en plantillas/templates de los programas. Ahí si estoy totalmente de acuerdo en que el código html debe mantenerse fuera del php.
3- El bucle for tiene sentido cuando sabes el número exacto de registros, en éste caso puedes saberlo si, pero deberías de hacer una operación más mientras que en el while no te hace falta. En todo caso aceptaría un for each pero no tiene sentido complicar el asunto.
El while es más que suficiente, efectivo y claro.
4- Se puede copiar sin problemas, aunque si lo haces directamente te copia # delante de cada línea, lo aconsejable es darle al botoncito “view plain” del encabezado del código, entonces se te abre la ventana en “texto plano” con formato
Hombre muchas gracias! Soy un novato en el tema y por gente como usted es que he logrado ir progresando sin necesidad de pagar cursos o libros costosos, me sirvió mucho lo que expusiste… Dios bendiga al internet!!
me ha gustado pero si la consulta la hago cuando quiero editar producto
entonces el select de este producto fruta a de estar seleccionado
como lo haria?
option value="id2">pera<\/option>
option selected value="id3">manzana<\/option
gracias
Yo lo suelo hacer así :
//dentro del bucle comprobamos si es el valor seleccionado
if($valor_seleccionado==$fila["fruta_id"]) $seleccionado=' selected="selected" '; else $seleccionado='';
//lo añadimos a lo que mostramos
option value="'.$fila["fruta_id"].'" '.$seleccionado.'>
i have a php who loads all states in a while but how i load the counties of an state (example : all counties of Idaho)
to ivan :
counties (ideally have the counties in the database)
you can use javascript to do it, but the most usual is to use ajax.
ajax call from a php script with the value of the state and then back it with the
you can also do with taking javascript counties in a vast array.
Escribir un Comentario