Vous êtes sur la page 1sur 8

CONEXIN A BASES DE DATOS CON PHP A continuacin se utilizara PHP para realizar la conexin con el manejador de Bases de Datos

MySQL: primeramente se crea en MySQL una nueva base de datos llamada empresa con la tabla de nombre articulos para realizar las operaciones bsicas de conexin sobre la base de datos, la tabla cuenta con 5 campos: codigo, nombre, precio_unidad, stock e id. El Script para crear la base de datos es el siguiente.

CREATE DATABASE `empresa` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;# 1 fila(s) fueron afectadas. USE `empresa` ;# MySQL ha devuelto un valor vaco (i.e., cero columnas). CREATE TABLE `empresa`.`articulos` ( `codigo` VARCHAR( 25 ) NOT NULL , `nombre` VARCHAR( 70 ) NOT NULL , `precio_unidad` DECIMAL( 10, 2 ) NOT NULL , `stock` INT( 5 ) NOT NULL , `id` INT( 10 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , UNIQUE (`codigo`) );

Seguidamente se define una clase en PHP de nombre conexion.class.php en donde se definen las operaciones bsicas sobre la base de datos, como son: conexin a la base de datos, consultas, insercin de datos, etc. El cdigo fuente de la clase es el siguiente.

<?php class Conexion { //Se define el nombre que tendr la clase PHP. //A continuacin se definen 5 variables requeridas para realizar la conexin con la base de datos. var $servidor_mysql; //Para asignar en nombre del servidor (maquina) donde esta montado el servidor de MySQL. var $usuario_mysql; //Para asignar en nombre del usuario que se quiere conectar a la base de datos MySQL. var $clave_mysql; //Para la asignar contrasea de acceso del usuario que se quiere conectar a la base de datos MySQL. var $nombre_db; //Para asignar el nombre de la base de datos con la que se quieren conectar. var $id_conexion; //Para asignar el identificador de la conexin con la base de datos. /*Este es el mtodo constructor de la clase Conexion, en donde se pasan como parmetros los valores requeridos para realizar la conexin, como son: el nombre del servidor, nombre del usuario, contrasea del usuario y nombre de la base de datos.*/ function Conexion($servidor, $usuario, $clave, $db){ $this->servidor_mysql = $servidor; $this->usuario_mysql = $usuario; $this->clave_mysql = $clave; $this->nombre_db = $db; } /*La funcin conectar() devuelve un valor o identificador de la conexin que se asignara a la variable id_conexion, esto si la conexin se realiza de forma correcta, de lo contrario de devuelve un error de conexin. Para realizar la conexin se utiliza la funcin de PHP mysql_connect */ function conectar(){ $this->id_conexion = mysql_connect($this->servidor_mysql, $this->usuario_mysql, $this->clave_mysql) or die('Error en la conexion'); }

/*El mtodo desconectar() finaliza la conexin a la base de datos una vez que se realiza cualquier operacin, para esto se utiliza la funcin PHP mysql_close y se pasa como parmetro el identificador de la conexin que se quiere finalizar */ function desconectar(){ mysql_close($this->id_conexion); } /*El mtodo selecionar_db() selecciona la base de datos de MySQL con la se quiere hacer conexin, para esto se utiliza la funcin PHP mysql_select_db y se pasa como parmetros el nombre de la base de datos con la que se quiere conectar y el identificador de la conexin con el servidor de base de datos. Si no se puede realizar la conexin se devuelve un error al seleccionar la base de datos*/ function selecionar_db(){ mysql_select_db($this->nombre_db, $this->id_conexion) or die("Error al seleccionar la Base de Datos"); } /*El mtodo consultar_sql($sql) se le pasa como parmetro una consulta SQL y devuelve un vector con los registros de una tabla. Para esto se utiliza la funcin PHP mysql_query pasando como parmetros la consulta SQL que se le pasa al mtodo y el identificador de la conexin, el resultado de la consulta se almacena en la variable $result, si la variable $result tiene algo, quiere decir que se obtuvieron registros en la consulta, entonces para mostrar la informacin al usuario se mete el resultado de la consulta en un vector. Con la funcin PHP mysql_fetch_array se almacena cada registro de la consulta en la variable $registro y luego se va guardando cada registro de la consulta en el vector $a[ ], al final el mtodo devuelve el contenido de el vector $a. Esta funcin se ejecuta cunado se quiere obtener informacin almacenada en una tabla de la base de datos*/ function consultar_sql($sql){ $result = mysql_query($sql, $this->id_conexion) or die("Error en la consulta"); $a = array(); if($result){ while($registro = mysql_fetch_array($result)){ $a[] = $registro; } } mysql_free_result($result); return $a; } /*El mtodo ejecutar_sql($sql) se le pasa como parmetro una consulta SQL de insercin o de eliminacin de datos, es decir a diferencia del mtodo anterior consultar_sql($sql), este se utiliza para guardar o borrar informacin de la base de datos, no para obtener datos de esta. Para esto se utiliza la funcin PHP mysql_query pasando como parmetros la consulta SQL que se le pasa al mtodo y el identificador de la conexin*/ function ejecutar_sql($sql){ return mysql_query($sql, $this->id_conexion) or die ("Error en la consulta: ".mysql_error($this->id_conexion)); } /*El mtodo getRegistro($id, $tabla) permite obtener un registro especifico de una tabla, para esto se pasa como parmetros el identificador del registro que se quiere buscar en la tabla y el nombre de la tabla. La variables $sql almacena la consulta que se quiere realizar sobre la tabla*/ function getRegistro($id, $tabla){ $sql = "select * from ".$tabla." where id = ".$id; return $this->consultar_sql($sql); } /*El mtodo getTabla($tabla) permite obtener todos los registros de una tabla, para esto se pasa como parmetro el nombre de la tabla. La variables $sql almacena la consulta que se quiere realizar sobre la tabla y se llama al mtodo consultar_sql($sql), que devuelve un vector con el resultado de la consulta*/ function getTabla($tabla){ $sql = "select * from ".$tabla; return $this->consultar_sql($sql); }

/*El mtodo guardar($tabla, $datos) arma una consulta SQL de insercin de datos que guarda informacin en una base de datos, para esto hay que pasar como parmetro el nombre de la tabla donde se van a insertar los datos y los datos que se enviaran desde el formulario. Para armar la consulta de insertar se utilizan dos variables, una en donde se almacenan de forma concatenada los nombres de los campos ($campos) de la tabla en donde se insertaran los datos y otra variable para asignar los valores ($valores) que se guardaran en la tabla. Al final se arma toda la consulta SQL de insertar y se asigna a la variable $sql, luego el contenido de la consulta se pasa como parmetro a el mtodo ejecutar_sql($sql) para ejecutar la consulta de insercin*/ function guardar($tabla, $datos){ $campos=""; $valores=""; $j=0; foreach($datos as $campo => $valor){ $j++; if($j==1){ $campos = $campos.$campo; $valores = $valores."'".$valor."'"; } else{ $campos = $campos.','.$campo; $valores = $valores.','."'".$valor."'"; } } $sql = "insert into ".$tabla." (".$campos.") values (".$valores.")"; return $this->ejecutar_sql($sql); } /*El mtodo eliminar($tabla, $id) elimina un registro especifico dentro de la tabla, para esto hay que pasar como parmetro el nombre de la tabla donde se eliminara el registro y el identificador del registro que se quiere eliminar dentro de la tabla, se arma toda la consulta SQL de eliminar y se asigna a la variable $sql, luego el contenido de la consulta se pasa como parmetro a el mtodo ejecutar_sql($sql) para ejecutar la consulta de insercin*/ function eliminar($tabla, $id){ $sql = "delete from ".$tabla." where id =".$id; return $this->ejecutar_sql($sql); } } ?>

Luego de implementar la clase conexion.class.php se procede a crear un fichero de nombre config.php en donde se asignan los valores iniciales necesarios para realizar la conexin con la base de datos. El cdigo fuente del fichero es el siguiente.

<?php $servidor_mysql = 'localhost'; //Nombre del servidor (maquina). $usuario_mysql = 'root'; //Nombre del usuario que se conecta con la base de datos. $clave_mysql = '12345678'; //Clave del usuario para conectarse con el motor de base de datos (MySQL). $nombre_db = 'empresa'; //Nombre de la base de datos con la que se quieren conectar. ?>

Para comenzar a utilizar los mtodos implementados en la clase conexion.class.php se procede a disear la interfaz de la aplicacin Web en el fichero index.php, el cdigo fuente del fichero es el siguiente. Nota: El estilo de nombre estilotabla.css, utilizado en el fichero anterior se anexa al final de este documento.

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Listado de Articulos</title> <link rel="stylesheet" href="estilotabla.css" /> </head> <body> <?php include_once('config.php'); //Se incluye el fichero de configuracin que contiene los valores para la conexin. include_once('conexion.class.php'); //Se incluye el fichero que contiene los mtodos que se van a utilizar. /*Se crea un nuevo objeto de nombre $conexion por medio del cual se accede a los mtodos que se declararon en la clase conexion.class.php que permiten realizar la conexin y las consultas sobre la base de datos de MySQL*/ $conexion = new Conexion($servidor_mysql, $usuario_mysql, $clave_mysql, $nombre_db); //Se llama al mtodo conectar() que se encarga de conectarse con el motor de base de datos. $conexion->conectar(); //Se llama el mtodo selecionar_db() que se conecta con una base de datos especifica. $conexion->selecionar_db(); /*Se asigna a la variable $artculos el resultado del mtodo getTabla('articulos') que devuelve todos los registros de una tabla, en este caso la tabla articulos*/ $articulos = $conexion->getTabla('articulos'); $conexion->desconectar(); //Se llama al mtodo desconectar() que finaliza la conexin a la base de datos. if($articulos){ /*Si la variable $articulos devuelve informacin, es decir si se obtuvieron registros de la tabla, se muestran los registros en una tabla HTML*/. ?> <!-- Se disea una tabla en HTML para mostrar los registros obtenidos de la tabla articulos--> <table class="EstiloTabla"> <tr id="EstiloCabecera"> <td id="EstiloCabecera">No.</td> <td id="EstiloCabecera">Codigo</td> <td id="EstiloCabecera">Nombre</td> <td id="EstiloCabecera">Precio</td> <td id="EstiloCabecera">Stock</td> <td id="EstiloCabecera">Eliminar</td> </tr> <?php /*Se recorre el contenido de la variable $articulos y se almacena cada registro de la tabla en un vector llamado $articulo, luego se escribe el contenido de cada uno de los campo en una celda o columna, fila por fila en la tabla HTML*/ foreach($articulos as $i => $articulo){ ?> <tr> <td class="EstiloCeldas"><?php echo $i+1; ?></td> <td class="EstiloCeldas"><?php echo $articulo['codigo']; ?></td> <td class="EstiloCeldas"><?php echo $articulo['nombre']; ?></td> <td class="EstiloCeldas"><?php echo $articulo['precio_unidad']; ?></td> <td class="EstiloCeldas"><?php echo $articulo['stock']; ?></td> <td class="EstiloCeldas"> /*El siguiente enlace permite eliminar un registro de la tabla, para esto se llama al fichero que realiza este proceso (articulos_eliminar.php) y se pasa como parmetro el cdigo del registro en la tabla que se quiere eliminar*/ <a href="articulos_eliminar.php?id=<?php echo $articulo['id']; ?>" onclick="return confirm('Desea eliminar el articulo?');">X</a> </td> </tr>

<?php } echo '</table>'; } else{ echo '<p><center><strong>no hay datos en la tabla</strong></center></p>'; } ?> /*El siguiente enlace permite agregar datos a la tabla para esto se llama al fichero que realiza este proceso (articulos_add.php), este fichero se implementa a continuacin. <center><strong><a href="articulos_add.php">Agregar Articulo</a></strong></center> </body> </html>

A continuacin se implementa el fichero articulos_add.php que permite a travs de un formulario agregar datos a la tabla articulos, el cdigo del fichero es el siguiente:

<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Listado de Articulos</title> <link rel="stylesheet" href="estilotabla.css" /> <style type="text/css"> .EstiloUno { font-family: Verdana; color: #000066; font-weight: bold; font-size: 12px; } #EstiloTitulo { font-family: Verdana; color:#000000; font-weight: bold; font-size: 18px; text-align:center; } .EstiloTabla{ border-collapse:collapse; border-style:solid; background-color:#D7E1FB; border-color:#000000; border-width: 1px; margin-right:auto; margin-left:auto; padding: 10px; padding-right:20px; width:30%; } #EstiloTituloDos{ font-family: Verdana; color:#000066; font-weight: bold; font-style:oblique; font-size: 16px;

text-align:center; } td {padding:15px} td {padding-top:10px; padding-right:20px; padding-bottom:5px; padding-left:0px;} </style> </head> <body> <?php if(!empty($_POST)){ //Si el mtodo POST del formulario enva algo, quiere decir que se estn enviando datos. include_once('config.php'); include_once('conexion.class.php'); $conexion = new Conexion($servidor_mysql, $usuario_mysql, $clave_mysql, $nombre_db); $conexion->conectar(); $conexion->selecionar_db(); /*Entonces se llama al mtodo guardar y se le pasa como parmetros el nombre de la tabla articulos junto con los datos enviados desde el formulario. Debajo esta el diseo del formulario, como se pueden dar cuenta el nombre que se asigna a cada control del formulario se asocia a un vector llamado datos para que cuando se enve la informacin del formulario solo se tomen los datos que se requieren*/ $conexion->guardar('articulos', $_POST['datos']); $conexion->desconectar(); header('Location: index.php'); exit; } else{ ?> <div class="EstiloUno"> <form action="articulos_add.php" method="post"> <table class="EstiloTabla"> <tr class="EstiloTabla"> <td colspan="2" id="EstiloTitulo">CAPTURA DE DATOS</td> </tr> <tr> <td align="right" width="30%">Codigo:</td> <td><input type="text" name="datos[codigo]" /></td> </tr> <tr> <td align="right">Nombre:</td> <td><input type="text" name="datos[nombre]" /></td> </tr> <tr> <td align="right">Precio:</td> <td><input type="text" name="datos[precio_unidad]" /></td> </tr> <tr> <td align="right">Stock:</td> <td><input type="text" name="datos[stock]" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="Aceptar" name="aceptar"> <input type="button" value="Cancelar" onclick="document.location='index.php'" /></td> </tr> </table> </form> </div>

<?php } ?> </body> </html>

Se implementa ahora el fichero articulos_eliminar.php para eliminar un registro de la tabla articulos pasando como parmetro por la URL el identificador del registro que se quiere eliminar, el cdigo del fichero es el siguiente:

<?php if(!empty($_GET['id'])){ //Si $_GET enva por la URL el identificador del registro que se quiere eliminar. include_once('config.php'); include_once('conexion.class.php'); $conexion = new Conexion($servidor_mysql, $usuario_mysql, $clave_mysql, $nombre_db); $conexion->conectar(); $conexion->selecionar_db(); /*Entonces se llama al mtodo eliminar y se le pasa como parmetros el nombre de la tabla articulos y el identificador del registro que se quiere eliminar dentro de la tabla (este id se pasa por la URL del navegador)*/ $conexion->eliminar('articulos', $_GET["id"]); $conexion->desconectar(); } header('Location: index.php'); exit; ?>

Este es el cdigo del estilo estilotabla.css que se al fichero index.php:

/* CSS Document */ .EstiloTabla{ border-collapse:collapse; border-style:solid; background-color:#99CC66; font-family:Arial; border-color:#0033FF; border-width: 1px; width:80%; text-align:center; margin-right:auto; margin-left:auto; padding: 2; } #EstiloCabecera{ border-collapse:collapse; border-style:solid; background-color:#C8EEF0; border-width: 1px; font-family:Verdana; font-size: 16px; border-color:#0033FF; text-align:center; font-weight: bold; padding: 2; }

.EstiloCeldas{ border-collapse:collapse; border-style:solid; font-family:Arial; color: #FF0000; border-color:#000000; border-width: 1px; padding: 2; }

Actividad Siguiendo el desarrollo de la aplicacin Web anterior, implemente el cdigo necesario para actualizar un registro dentro de la tabla articulos de la base de datos empresa. Obtener un registro especifico de la tabla articulos pasando como parmetro el identificador del registro. Realizar una consulta en la tabla articulos que muestre un informe con los articulos que cuestan mas de 20 mil pesos y su existencia no sea superior de 10 unidades.

Vous aimerez peut-être aussi