Autor Tema: Cargar opciones a lista desplegable select option desde base de datos con PHP  (Leído 145050 veces)

jga

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 31
    • Ver Perfil
Hola como estais, he estado usando el buscador y no he encontrado ningun post referente a mi caso. Intentare explicarme , tengo un problema con una lista desplegable a la hora de que me recoja los campos de una tabla que hay en una base de datos . La base de datos tiene una tabla llamada cursos con un solo campo curso en el que figuran el nombre de los cursos , y lo que quiero hacer es que cuando actualice la lista de cursos de la bbdd aparezcan los nuevos cursos en la lista desplegable , y es por eso que tiene que coger la lista de cursos de la bbdd , pero al pulsar en la desplegable no hace nada, espero que podais orientarme un poco porque he probado varias cosas y no doy con ello ,
el codigo que escribo es este es este


Código: [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Elegir curso</title>
</head>
<body>
curso<br />
 <?php
// Consultar la base de datos
$conn=mysqli_connect("localhost","root","root","alumnoshnp");
$consulta_mysql='select * from cursos';
$resultado_consulta_mysql=mysqli_query($consulta_mysql,$conn);
 
?>

 <select name="selectcurso">
  <?php
 
while($lista=mysqli_fetch_assoc($resultado_consulta_mysql))
   echo 
"<option  value='".$lista["curso"]."'>"."</option>"
  
?>

</select>
</body>
</html>


gracias y un abrazo.
« Última modificación: 02 de Abril 2015, 15:47 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2631
    • Ver Perfil
Re:cargar opciones a lista desplegable desde bbdd
« Respuesta #1 en: 01 de Abril 2015, 23:17 »
Hola lo primero sería comprobar que la consulta a la base de datos te esté trayendo los resultados correctamente.

Por ejemplo si cambias esto:

echo "<option  value='".$lista["curso"]."'>"."</option>";

Por esto:

echo 'Obtenido: '.$lista["curso"];

Deberías poder ver los resultados en la pantalla.

También ten en cuenta que las comillas te pueden estar generando un conflicto

Salu2

jga

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 31
    • Ver Perfil
Re:cargar opciones a lista desplegable desde bbdd
« Respuesta #2 en: 02 de Abril 2015, 10:50 »
Ante todo gracias por tu valioso tiempo Ogramar , veras , con tu recomendacion he probado este codigo
Código: [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Elegir curso</title>
</head>
<body>

 <?php

$conn
=mysqli_connect("localhost","root","root","alumnoshnp") ;
if (
$conn)echo "conexion ok" ;
else echo 
"conexion ko";


$consulta="select * from cursos";

$resultado=mysqli_query($conn,$consulta);
 
 while(
$lista=mysqli_fetch_array($resultado))
 echo 
"</br>".$lista["curso"]."</br>" ;
  
?>


</body>
</html>

y me devuelve los nombres de los cursos perfectamente

para cargarlos en la lista creo este otro :

Código: [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>
curso<br />
<select name="select1">
   
       <?
            $conn=mysqli_connect("localhost","root","root","alumnoshnp") ;
                  if ($conn)echo "conexion ok" ;
                 else echo "conexion ko";
                 $consulta="select * from cursos";
                 $resultado=mysqli_query($conn,$consulta);
                       
                        while($lista=mysqli_fetch_array($resultado))
 
    ?>
                   <option  value="<? $lista['curso']?> ">
                           <? $lista['curso']?>
                   </option>
   
</select>

</body>
</html>

y aparece la pestaña , pero al pulsar sobre ella no aparece nada , ni siquiera las opciones en blanco , un abrazo.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2631
    • Ver Perfil
Re:cargar opciones a lista desplegable desde bbdd
« Respuesta #3 en: 02 de Abril 2015, 13:35 »
Hola parece que tienes el código php mal construido, por ejemplo en while($lista=mysqli_fetch_array($resultado)) ¿dónde están los corchetes de inicio y fin del while?

Para revisar cómo se construyen while en php: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193

Revisar cómo se construye un select html en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=534:checkbox-y-radio-en-form-html-select-option-y-optgroup-multiple-listas-desplegables-opciones-cu00723b&catid=69:tutorial-basico-programador-web-html-desde-cero&Itemid=192

No lo he probado pero la idea sería algo como esto

Código: [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>
curso<br />
<select name="select1">
   
       <?
            $conn=mysqli_connect("localhost","root","root","alumnoshnp") ;
                  if ($conn)echo "conexion ok" ;
                 else echo "conexion ko";
                 $consulta="select * from cursos";
                 $resultado=mysqli_query($conn,$consulta);
                       
                        while($lista=mysqli_fetch_array($resultado)){
 
    ?>
                   <option>  <? echo $lista['curso']?></option>
    <? } ?>
</select>
</body>
</html>

Salu2

jga

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 31
    • Ver Perfil
Re:cargar opciones a lista desplegable desde bbdd
« Respuesta #4 en: 02 de Abril 2015, 14:58 »
 ya estamos aqui otra vez , siento molestar  tanto , veras , he probado el codigo tal cual mencionas y sigue pasando lo mismo , ya no se que pensar ; si  soy un inutil o es que tengo mala suerte ,  tendra algo que ver el tipo de campo de la tabla mysql? esta en varchar , un abrazo y muchas gracias por todo.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2631
    • Ver Perfil
Hola puede que falte el punto y coma aquí:

<option>  <? echo $lista['curso'];?></option>

Prueba también <option>  <? echo "".$lista['curso'];?></option>

Y también <option>  <?=$lista['curso']?></option>

Prueba también a hacer apertura de etiquetas php con <?php en lugar de con <?

Salu2



jga

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 31
    • Ver Perfil
he vuelto a seguir tus recomendaciones , y , hecho compañero , no sabes lo que te lo agradezco , voy a poner aqui los codigos de los documentos que he usado y asi si alguien necesita hacerlo puede consultarlo , porque antes busqué un tema con algo asi , pero especifico no lo encontré, un abrazo fuerte y gracias por tu tiempo.

config.php

Código: [Seleccionar]
<?php

/*
 * Archivo de configuración de la conexion a la BD
 * * $server : nombre del servidor de la base de datos
 * * $username : nombre del usuario de la base de datos
 * * $password : password del usuario de la base de datos
 * * $databas_name : nombre de la base de datos
 */

$server 'localhost';
$username 'root';
$password 'root';
$database_name 'alumnos';

?>



archivo conexion.php
Código: [Seleccionar]
<?php

/*
 * Código de conexión a una base de datos mediante sintaxis de mysqli
 */
include 'config.php';

$conexion = new mysqli($server,$username,$password,$database_name);

if ( 
$conexion->connect_error 

    die(
'Error de Conexión'$conexion->connect_error);
}
else
{
    
//echo 'Conexion OK';
}

?>



archivo formulario.php con la lista <select>

Código: [Seleccionar]
<?php

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

include 'conexion_mysqli.php';

$query 'SELECT * FROM cursos';

$result $conexion->query($query);

?>

<select>   
    <?php    
    
while ( $row $result->fetch_array() )    
    {
        
?>

   
        <option value=" <?php echo $row['curso'?> " >
        <?php echo $row['curso']; ?>
        </option>
       
        <?php
    
}    
    
?>
       
</select>
<?php

?>



Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2631
    • Ver Perfil
Me alegro que lo hayas resuelto, y gracias por poner los códigos, le pueden servir a más personas. Salu2

jorge_4ugusto

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Gracias si funciona

Carlos Nuñez

  • Sin experiencia
  • *
  • Mensajes: 2
    • Ver Perfil
buenos dias/tardes/ noches
quisiera ver si me pueden ayudar. lo que tengo que hacer es con lista  despegable que cuando seleciones cualquier opcion me muestre de mi base de datos las opciones seleccionadasmi base de datos esta sobre postgres ya pude hacer la conexion solo me falta que jale la informacion

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2631
    • Ver Perfil
Re:Cargar opciones a lista desplegable select option desde base de datos con PHP
« Respuesta #10 en: 30 de Noviembre 2016, 19:54 »
Buenas Carlos, lee https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0 , abre un nuevo hilo, expón el problema y el código que tienes hasta el momento, etc.

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".