13 jul 2013

Clase estándar de conexión a Base de Datos (PHP & MySQL)

Si eres uno de los programadores que realiza aplicativos usando php sin frameworks, este información puede serte útil. Si bien es cierto que cada desarrollador tiene un estilo al momento de maquetar la estructura y el código propiamente dicho de las aplicaciones, es bueno considerar que para los métodos que se usan de manera reiterada, como el de conexión a Base de Datos, existen clases estándar, esta demás decir que muchos frameworks utilizan dichas clases y métodos estandarizados por las comunidades de desarrollo.


Archivo: DB.class.php
class DB {

    private static $instance;
    private $MySQLi;

    private function __construct(array $dbOptions) {

        $this->MySQLi = @ new mysqli(
                $dbOptions['db_host'], $dbOptions['db_user'], $dbOptions['db_pass'], $dbOptions['db_name']);

        if (mysqli_connect_errno()) {
            throw new Exception('Database error.');
        }

        $this->MySQLi->set_charset("utf8");
    }

    public static function init(array $dbOptions) {
        if (self::$instance instanceof self) {
            return false;
        }

        self::$instance = new self($dbOptions);
    }

    public static function getMySQLiObject() {
        return self::$instance->MySQLi;
    }

    public static function query($q) {
        return self::$instance->MySQLi->query($q);
    }

    public static function esc($str) {
        return self::$instance->MySQLi->real_escape_string(htmlspecialchars($str));
    }
}

En Lugar de explicar el código y los métodos que conforman la clase "db", vamos a pasar directamente a explicar el modo de uso de esta clase.

Creamos un archivo llamado index.php y escribimos el siguiente código

// Referencia a la clase db
require './db.class.php';

// Datos de la conexion
$dbOptions = array(
    'db_host' => 'localhost',
    'db_user' => 'sces',
    'db_pass' => 'sces',
    'db_name' => 'sces01'
);

try {
    DB::init($dbOptions);
    echo "Conexion establecida";
} catch (Exception $exc) {
    echo $exc->getTraceAsString();
}



En el siguiente post veremos la recuperación de datos. Hasta Pronto

14 jun 2013

Netbeans 7.3. Cómo conectarse a un Servidor Web Remoto mediante FTP.

Muchos desarrolladores, aún tenemos problemas al momento de publicar nuestras aplicaciones locales (desarrolladas en un servidor web local cómo xampp, wampp, etc.) en un servidor alojado en la nube (hosting), en mi experiencia como desarrollador php tuve muchos inconvenientes usando un cliente ftp (filezilla) ya que su funcionalidad es demasiado básica, le indicamos el o los archivos a subir y si existe algun archivo con el mismo nombre en el hosting, simplemente lo sobreescribe, esto puede generar diversos problemas.



- No es posible revisar el contenido del archivo, para realizar una sincronización.

- Imposibilita el control de versiones.

Descrito el problema, pasaremos a mostrar la solución, seguiremos usando nuestro querido IDE Netbeans, en esta oportunidad nos encontramos con la versión 7.3.

¿Qué queremos lograr?




Para los que han desarrollado en Visual Studio, la captura anterior podría parecerles familiar, ya que el IDE de desarrollo de Microsoft tiene esta funcionalidad en el Team Foundation.

Pasaremos a detallar los pasos necesarios para configurar Netbeans y conectarnos a nuestro servidor web alojado en la nube.


Si ya tenemos un proyecto simplemente ingresamos a sus propiedades y configuramos la opción "Run Configuration".) Para ver detalles de la configuración obviaremos los siguientes 3 pasos.

1. Si aún no tenemos un proyecto, lo creamos.

2. Modificamos los datos del proyecto.


3. Aqui vemos que por defecto en la pestaña "Run As:" tenemos elegida la opción "Local Web Site" (Servidor Web Local = localhost)


4. Cambiamos "Local Web Site" por "Remote Web Site" (Servidor Web Remoto)


5. Vemos que se activa la casila "Remote Connection", le damos click al botón "Manage".


6. En la pantalla "Manage Remote Connections" tendremos todas las opciones para conectarnos a un servidor FTP. Si es la primera vez que ingresamos a esta pantalla le damos click al botón "Add" para agregar una configuración nueva.

 7. Los datos necesarios para conectarnos a un servidor FTP son: nombre del dominio (en mi caso "blockcontrol.com"), el puerto por defecto es el 21, el nombre de usuario, el password y el directorio inicial (Initial Directory), en general los servidores que manejan php y mysql estan basados en Linux y el directorio raíz para publicar los archivos de la web es "public_html", las demás opciones las dejamos por defecto.

8. Una vez llenados los datos procedemos a probar nuestra conexión (botón "Test Connection"), si los datos son correctos tendremos un mensaje como el que se muestra.


9. Es importante configurar el modo de actualización de archivos, tenemos 3 opciones: "Manually": que permite subir o sincronizar los archivos de manera manual, "On Run" que sincroniza los archivos al momento de ejecutar la aplicación y "On Save" que sincroniza los archivos al momento de darle la orden de guardar en el Netbeans, personalmente recomiendo trabajarlo manualmente.

10. Por último le damos click al botón "Finish".



11. Finalmente tendremos nuestro aplicativo sincronizado.



Plan de festejos por la reinauguración del blog

Por algún motivo, los mensajes en el último post que hice hace 2 años, me animaron a seguir publicando artículos de apoyo a los que se inician en la programación, las pocas personas que revisan el blog, y tienen noción de lo rápido que avanzan las tecnologías de información, sabrán que mucho de lo que publiqué, en la actualidad no se usa. Trataremos de tocar los temas de interés usando lo que actualmente es considerado estándar, siempre con una cuota de innovación, creatividad, seducción, musicalidad, entretenimiento, sagacidad, maestría entre otras cosas.



Hasta muy pronto.

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';

Entradas populares