5 nov 2011

Llenar un combobox (lista desplegable) con datos de una bd (php & mysql)

Esta es una aplicación de lo explicado en los posts anteriores (conectarse a una base de datos, consultar y mostrar datos).

Primero veremos la forma de mostrar los datos de una consulta en un combobox.

El código html para mostrar un combobox es el siguiente

<select name="nombCliente">
   <option value="1">Opcion 1</option>
   <option value="2">Opcion 2</option>
</select>
Para mostrar los datos dinámicamente mediante una consulta vamos a tener que combinar código php y html.

Aquí les muestro la tabla con la que vamos a trabajar... sólo con 2 campos código y nombre, el campo código es autoincrementable.
El resultado que queremos es:
Ahora vamos con el código

<?php

/*
 * Código para mostrar datos dinámicamente en un combobox.
 */

include 'conexion_mysqli.php';

$query = 'SELECT * FROM cliente';

$result = $conexion->query($query);
//Como ya se dijo anteriormente la variable $conexion esta definida 
//en el archivo 'conexion_mysqli.php'

?>
<select>   
    <?php   
    while ( $row = $result->fetch_array() )   
    {
        ?>
   
        <option value=" <?php echo $row['codiCliente'] ?> " >
        <?php echo $row['nombCliente']; ?>
        </option>
       
        <?php
    }   
    ?>       
</select>

Como se darán cuenta simplemente estamos desdoblando la parte de <option></option> imprimiendo varios de ellos con el bucle while (mientras hayan datos), se le asigna como 'value' el campo codiCliente (lo que no se muestra) y como valor que se muestra el campo nombCliente.

¿Por qué es importante incluir el campo value?
Será necesario al momento de enviar datos desde un formulario, el dato que se envía es el que no se muestra.

link del proyecto en mediafire aquí

29 comentarios:

  1. perfecto lo que necesito

    ResponderEliminar
  2. mira no se como se captura el id, osea, a mi me sirve la descripción pero también el id para guardar el id, como hago para guardar el id?

    ResponderEliminar
    Respuestas
    1. Hola, si aún necesitas ayuda puedes escribirme detallando lo que quieres hacer. Saludos

      Eliminar
    2. bryan yo necesito ayuda...me podrías dar tu mail para contactarte. por favor

      Eliminar
    3. escribeme a rvnistelrooy_17@hotmail.com

      Saludos

      Eliminar
    4. buenas tarde subí to el código pero no funciona

      Eliminar
  3. Excelente... Lo necesitaba para incorporarselo a mi tesis. Gracias por estos aportes!

    ResponderEliminar
  4. GRacias amigazo, muy buena, espero que pueda hacer el resto, quiero hacer un dropbox.

    ResponderEliminar
  5. Genial, fácil y práctico.

    Saludos

    ResponderEliminar
  6. Hola, quiero hacer exactamente lo que estas describiendo, pero en la tabla las opciones que tengo se repiten, es decir, como si por alguna razón en tu ejemplo tuvieras dos registros de Cristiano Ronaldo, entonces necesito que no me lo muestre doble en la lista desplegable.. Te agradezco si puedes ayudarme..

    ResponderEliminar
    Respuestas
    1. Para solucionar tu problema, existen 2 opciones, la primera, es modificar el código en la parte del bucle "WHILE", validando que un dato no sea igual al anterior, la segunda opción y la más fácil, es modificar tu consulta, podrías añadirle la sentencia DISTINCT, para nuestro ejemplo sería de esta forma:

      $query = 'SELECT DISTINCT * FROM cliente';

      /*Me cuentas como te fue, Saludos*/

      Eliminar
  7. muchas gracias, tu codigo me ayudo bastante, ;) sigue asi, animo.

    ResponderEliminar
  8. amigo una pregunta como se hace para guardar en otra tabla la opcion que selecciones del menu tengo ese problema

    ResponderEliminar
    Respuestas
    1. Normalmente en una lista desplegable se almacenan 2 valores, un valor Identificador (Id) y otro de descripcion, cual es el valor que quieres guardar en otra tabla?.

      Eliminar
    2. Buenas tardes amigo el valor que deseo guardar en otra tabla es la descripcion que me aparece en la lista y que yo seleccione, muchas gracias

      Eliminar
    3. Generalmente el HTML queda de esta forma:

      <-form ... >
      ...
      <-select name="lista">
      <-option value="valor">Descripcion<-/option>
      <-/select>
      ...


      ---------------------------------------------
      Al momento de recuperar el valor que seleccionaste, tendrías que hacer esto:

      <-?php

      $resultado = $_GET['lista'];

      -?>

      La variable resultado sería igual a la cadena "valor".

      En tu caso, si quieres obtener la descripcion en la variable $resultado, existen 2 opciones, la más simple es omitir el tag value="valor" del codigo html perteneciente a la lista desplegable, debería quedar más o menos asi:

      <-form>
      ...
      <-select name="lista">
      <-option >Descripcion<-/option>
      <-/select>
      ...
      <-/form>


      Ojalá te sirva, Saludos

      Eliminar
  9. ok gracias pero esto lo hago para guardar los datos seleccionados de una lista desplegable que se lleno a traves de una consulta de una tabla???

    ResponderEliminar
  10. amigo sera que me puedes explicar de manera mas explicita por favor, es que intento guardar y me aparece en blanco el campo en la tabla, y disculpame tanta molestia por favor

    ResponderEliminar
  11. hola! buen aporte... pero tengo un problema... debo relacionar 2 listas desplegables. Por un lado tengo los 'niveles' (kinder, primero basico, segundo... etc) y por otro las 'letras' (A,B,C,etc)... el asunto es q debo seleccionar Primero Básico y que en el otro desplegable las letras relacionadas a ese curso A y B por ejemplo... hasta el momento he logrado q me muestre todos los NIVELES y todas las LETRAS... pero NO los q están relacionados... si me pueden ayudar porfa!... muchas gracias...
    les dejo mi código:
















    ResponderEliminar
  12. while ( $row = mysql_fetch_array($cantidadramo) )
    {
    ? >



    <?ph p
    }

    ResponderEliminar
  13. esta bien pero para grabarlo en otra tabla un ejemplo yo trabajo con especialidad y lo kiero grabar a matricula como hago k los dos se llamen igual y llenarlo en matricula

    ResponderEliminar
  14. Hola no se si me puedan ayudar e visto los comentarios anteriores pero sigo sin entender, yo tengo una lista desplegable que me trae información de la base de datos, ya entendí que el primer número es con el que hace la consulta y el segundo el que muestra en mi caso el primer campo es el código y el segundo el nombre, pero como le digo que si el usuario selecciona un nombre con ese me genere una consulta de la base de datos
    Mil gracias

    ResponderEliminar
  15. $conexion->query($query);

    Amigo, me muestra esto en el head de mi página, sabes por que?

    La conexión marca éxito!

    Muchas gracias!!

    ResponderEliminar
  16. hola que tal, disculpa creen q m puedan ayudar sobre de como obtener el registro de un campo de la base de datos mediantes una lista desplegable (mostrar mediante una lista dezplegable los articulos disponibles, cuando se van registrando que se disminuya automaticante la catidad) espero y m ayuden.. gracias

    ResponderEliminar
    Respuestas
    1. si aun necesitas ayuda, podrias explicar con mas detalle lo que quieres hacer?

      Eliminar
  17. Muy bueno, me sirvió muchas gracias!!!:)

    ResponderEliminar
  18. hola si me podrian ayudar quiero mandar los datos que de una lista desplegable que extraje de una campo a otra tabla pero no se como insertarlo

    ResponderEliminar

Entradas populares