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í

Consultar y mostrar datos de una BD (mysql / mysqli )

Ahora vamos a consultar y mostrar datos de una BD, luego analizaremos las diferencias entre la sintaxis de mysql y mysqli

Para este ejemplo vamos a usar una base de datos simple, sólo con una tabla llamada 'cliente' de la cual vamos a mostrar los datos mediante php, tendrán que realizar los cambios necesarios en el 'config.php' y en la variable $query para que les funcione si usan otra bd.


mysql
<?php

/*
 * Codigo para consultar y mostrar datos de una bd
 * sintaxis mysql.
 */

include 'conexion_mysql.php';  
//Llamada al archivo de conexion

$select = mysql_select_db($database_name);
//Seleccionamos la base de datos, si ya hicimos este proceso en el archivo de conexión obviamente quitamos ésta línea.

$query = 'SELECT * FROM cliente'; 
//Consulta a la BD

$result = mysql_query($query);
//Almacenamos en la variable $result los datos de la consulta

while ( $row = mysql_fetch_array( $result ) )   
{
    echo '<br>'.$row['nombCliente'];
}
//Recorremoos la consulta mediante un while imprimiendo el campo 'nombCliente'

?>

mysqli
<?php

/*
 * Codigo para consultar y mostrar datos de una bd
 * sintaxis mysqli.
 */

include 'conexion_mysqli.php';
 //Llamada al archivo de conexion

$query = 'SELECT * FROM cliente'; 
//Consulta a la BD

$result = $conexion->query($query);
//Almacenamos los datos en la variable $result
// * OJO: la variable $conexion ya se definió en el archivo
// * 'conexion_mysqli.php' la podemos usar ya que previamente
// * realizamos la invocación de este archivo con 'include'

while ( $row = $result->fetch_array() )  
{
    echo '<br>'.$row['nombCliente'];  
}
//Recorremos la variable $result y mostramos el campo 'nombCliente'

?>

link del proyecto en mediafire aquí

Conexión a BD (mysql / mysqli )

Antes ya debiste crear un proyecto y el archivo config.php donde se definen las variables de conexion a la BD.

Código config.php

<?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 = '123';
$database_name = 'secayoelsistema';

?>


Diferencias en la sintaxis de la conexión a la BD.
mysql
<?php

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

$conexion = mysql_connect($server, $username, $password);
if($conexion){
    echo 'Conexion OK';
}
else {
    echo 'Error';
}

?>

mysqli
<?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';
}

?>

Como se daran cuenta cuando usamos mysqli añadimos a la conexión el parámetro $database_name (nombre de la base de datos), en cambio en mysql ése parámetro es añadido en otra funcion llamada mysql_select_db. De esta manera ahorramos lineas de código. Otro detalle es el tratamiento de los errores. Pruebenlo!


link mediafire aquí

Creación del proyecto y archivo de configuración config.php

Para desarrollar en php recomiendo usar el IDE Netbeans (si eres experto creo que basta con el notepad++)

*Debo aclarar que antes ya debimos instalar nuestro servidor apache, si aún no lo han hecho pues el xampp les será de mucha ayuda. link xampp
Tambien existe el wampp server, el appserver entre otros.

1) Creación del proyecto mediante netbeans


2) Seleccionar PHP Application


3) Le asignamos un nombre al proyecto en Project Name, en Source Folder elegimos la carpeta de publicación de nuestro servidor, en este caso la carpeta de publicación del xampp es htdocs.


¿Esto para qué?

Al momento de ejecutar nuestro proyecto desde netbeans el navegador buscará estos archivos en la carpeta de publicacion htdocs (Ejemplo: localhost/tu_aplicacion_web/index.php, estará accediendo al archivo index.php que se encuentra en la carpeta tu_aplicacion_web y esta a su vez se encuentra en la carpeta de publicacion del servidor)





4) Si has configurado bien en el paso anterior, aqui no será necesario modificar nada


Project URL significa la dirección mediante la que se accederá desde un navegador al sitio web que estamos creando


5) Hare otro tutorial para usar frameworks, en este caso no debes elegir ninguno simplemente clic en Terminar



6) Finalmente tenemos ésto, nuestra carpeta de proyecto y un archivo index.php que se crea por defecto.





7) Crear el archivo config.php


Clic derecho a Source Folder -> Nuevo -> PHP File











8) Le damos el nombre de config y aceptamos




9) Nos debe quedar algo parecido a esto, OJO olvide cerrar la carpeta llamada TiendaVirtual (es un proyecto que posteriormente estaré compartiento con ustedes), nuestro proyecto en este caso se llama "SeCayoElSistema_mysqli" y es en el que trabajaremos por ahora




10) Código del archivo config.php

Este archivo nos servirá para no declarar otra vez las variables de conexión a la base de datos.

Recomiendo realizar comentarios para mantener la posibilidad de que alguien que revise el código pueda entenderlo.
Incluso si tu lo ves después de mucho tiempo olvidas donde esta tal o cual parte.




Código "config.php"

<?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 = '123';
$database_name = 'secayoelsistema';

Ejemplos de desarrollo web con estándares ( php y mysqli )

Como todos sabemos uno de los principales problemas de los programadores es la falta de orden al codificar en cualquier lenguaje y mucho más en la programación web.

Mediante esta secuencia de aportes trataré de compartir con ustedes la sintaxis del MYSQLI (predecesor de mysql) al momento de realizar la interacción con la BD desde php.


Creación de un proyecto php con NETBEANS


Consultar y Mostrar datos de una BD (mysql / mysqli)

Entradas populares