Sei sulla pagina 1di 12

Clase para manejar base de datos MySQL en PHP

April 5, 2008 PHP, Programacion Una de las mximas prioridades en una aplicacin PHP que haga uso de una base de datos, es la organizacin y eficiencia del cdigo para evitar consumo innecesario de memoria, esto es bien sabido por cualquier programador. Pero qu hay de la separacin del cdigo de lgica y el de la base de datos? El patrn Modelo-Vista-Controlador nos puede ser de gran utilidad ya que separa la lgica (controladores) de scripts que acceden y relacionan las tablas de un base de datos (modelos) y de la interfaz grfica (vistas). Pero en ocasiones no necesitamos de tantas capas de abstraccin y decidimos programar todo revuelto. An as, utilizar una clase para los accesos a la base de datos nos es de gran ayuda para aquello de la organizacin del cdigo. La clase que a continuacin propongo utiliza un patrn llamado Singleton. Este patrn obliga a instanciar unicamente una vez la clase para evitar 2 o ms conexiones simultneas. La clase contiene mtodos para ejecutar sentencias SQL, cargar resultados en forma de objetos, ver el nmero de consultas totales etc.
<?php class DataBase { private $conexion; private $resource; private $sql; public static $queries; private static $_singleton; public static function getInstance(){ if (is_null (self::$_singleton)) { self::$_singleton = new DataBase(); } return self::$_singleton; } private function __construct(){ $this->conexion = @mysql_connect('localhost', 'db_user', 'db_password')); mysql_select_db('database_name', $this->conexion); $this->queries = 0; $this->resource = null; } public function execute(){ if(!($this->resource = mysql_query($this->sql, $this->conexion))){ return null; } $this->queries++; return $this->resource; } public function alter(){ if(!($this->resource = mysql_query($this->sql, $this->conexion))){ return false; } return true; } public function loadObjectList(){

if (!($cur = $this->execute())){ return null; } $array = array(); while ($row = @mysql_fetch_object($cur)){ $array[] = $row; } return $array; } public function setQuery($sql){ if(empty($sql)){ return false; } $this->sql = $sql; return true; } public function freeResults(){ @mysql_free_result($this->resource); return true; } public function loadObject(){ if ($cur = $this->execute()){ if ($object = mysql_fetch_object($cur)){ @mysql_free_result($cur); return $object; } else { return null; } } else { return false; } } function __destruct(){ @mysql_free_result($this->resource); @mysql_close($this->conexion); } } ?>

Si notamos, el constructor es privado. Por qu? para asegurarnos de que la clase se instancie desde dentro de s misma. Es decir, al ejecutar el mtodo DataBase::getInstance() llamamos al constructor y creamos una nica instancia de DataBase. Si volvemos a ejecutar ese mtodo y la clase ya ha sido instanciada antes, entonces nos devolver la instancia. Eso es el objetivo del patrn Singleton. Veamos entonces como hacer una conexin, ejecutar una consulta y mostrar los resultados. Se asume que los parmetros de conexin como el host, el nombre de usuario y dems se especifican directamente en la clase. view plaincopy to clipboardprint? 1. // Hacemos la conexin 2. $db = DataBase::getInstance(); 3. 4. // Supongamos que tenemos una tabla de usuarios

5. // Hacemos la consulta: 6. $db->setQuery('SELECT `id`,`nombre`,`grupo` FROM `usuarios`'); 7. 8. // La ejecutamos y al mismo tiempo obtenemos un arreglo de objetos 9. // con los campos especificados en la consulta como propiedades. 10. $usuarios = $db->loadObjectList(); 11. 12. // Los imprimimos directamente en pantalla... 13. foreach($usuarios as $usuario){ 14. echo 'ID: '.$usuario->id; 15. echo 'Nombre: '.$usuario->nombre; 16. echo 'Grupo: '.$usuario->grupo; 17. echo '<br />'; 18. } Y ah tienen un pequesimo ejemplo de uso. Algunos mtodos como el DataBase::loadObject o DataBase::loadObjectList fueron tomados de la API de Joomla. En fin, espero que les sea de utilidad.

Crear una clase para conectar a base de datos con PHP


Por marcosdev el 29 de Octubre de 2008 con 44,412 visitas. PHP, MySQL y Servidor Otros tutoriales por marcosdev. Cuando un programador web comienza con PHP, una de las tareas ms habituales es la de realizar conexiones y querys a la base de datos. Normalmente, muchsima gente utiliza funciones php para conectarse a una base de datos directamente en el cdigo como puede ser mysql_connect (para conectarse a una base de datos MySQL) o pg_connect (para conectarse a una base de datos Postgress). Esta forma de trabajar implica un problema muy serio si nuestro proyecto va orientado a una intranet, en la cual, de la noche a la maana pueden tener la necesidad de cambiar la base de datos por otra diferente (por ejemplo, que una intranet crezca mucho y necesiten cambiar a una base de datos Oracle por funcionalidades especficas). Si se da este caso podramos tener un problema muy grave; deberamos revisar todo el cdigo que hemos escrito en busca de esas funciones especficas y adaptarlas a la nueva base de datos. Para solventar este problema (crear una capa que nos abstraiga de que base de datos estemos utilizando) y adems crear posibles funcionalidades nuevas, vamos a crear una clase muy sencilla la cual nos permita conectarnos a la base de datos. Esta clase la vamos a crear siguiendo el patrn de diseo Singleton. Los patrones de diseo son soluciones a problemas tpicos de programacin que se repiten contnuamente. El patrn Singleton nos ayuda a crear una clase la cual, si intentamos llamarla dos veces, realmente slo es una instancia. En vez intentar crear el objeto, lo que haremos es instanciarlo. Esto nos permite conectarnos a la base de datos en cualquier punto del cdigo (dentro de funciones, dentro de objectos,) sin necesidad de crear ms conexiones o tener que pasarla por parmetro (en el caso de querer que una funcin determinada que tengamos creada utilice una conexin existente y no cree otra nueva). La estructura de la clase sera la siguiente:

Cdigo :
<?php /* Clase encargada de gestionar las conexiones a la base de datos */ Class Db{ private private private private private private private $servidor='localhost'; $usuario='user'; $password='test'; $base_datos='testDB'; $link; $stmt; $array;

static $_instance; /*La funcin construct es privada para evitar que el objeto pueda ser creado mediante new*/ private function __construct(){ $this->conectar(); } /*Evitamos el clonaje del objeto. Patrn Singleton*/ private function __clone(){ }

/*Funcin encargada de crear, si es necesario, el objeto. Esta es la funcin que debem os llamar desde fuera de la clase para instanciar el objeto, y as, poder utilizar sus m todos*/ public static function getInstance(){ if (!(self::$_instance instanceof self)){ self::$_instance=new self(); } return self::$_instance; } /*Realiza la conexin a la base de datos.*/ private function conectar(){ $this->link=mysql_connect($this->servidor, $this->usuario, $this->password); mysql_select_db($this->base_datos,$this->link); @mysql_query("SET NAMES 'utf8'"); } /*Mtodo para ejecutar una sentencia sql*/ public function ejecutar($sql){ $this->stmt=mysql_query($sql,$this->link); return $this->stmt; } /*Mtodo para obtener una fila de resultados de la sentencia sql*/ public function obtener_fila($stmt,$fila){ if ($fila==0){ $this->array=mysql_fetch_array($stmt); }else{ mysql_data_seek($stmt,$fila); $this->array=mysql_fetch_array($stmt); } return $this->array; } //Devuelve el ltimo id del insert introducido public function lastID(){ return mysql_insert_id($this->link); } } ?>

En esta clase, cmo podemos observar, existen varios mtodos para conectar, obtener resultados de una query as como el ltimo id que se ha creado mediante un Insert en un campo clave autoincremental. Ahora veamos como utilizar esta clase:

Cdigo :
<?php /*Incluimos el fichero de la clase*/ require 'Db.class.php'; /*Creamos la instancia del objeto. Ya estamos conectados*/ $bd=Db::getInstance(); /*Creamos una query sencilla*/

$sql='SELECT NOMBRE FROM CLIENTES'; /*Ejecutamos la query*/ $stmt=$bd->ejecutar($sql); /*Realizamos un bucle para ir obteniendo los resultados*/ while ($x=$bd->obtener_fila($stmt,0)){ echo $x['NOMBRE'].'<br />'; } ?>

Muy sencillo y prctico. Esta clase es muy (MUY) mejorable. Por ejemplo, en el siguiente tip veremos como utilizar un fichero de configuracin que ser utilizado por una clase llamada Conf, la cual ser utilizada a su vez por esta clase que acabamos de crear. Adems, introducir control de errores de conexin, niveles de seguridad para utilizar diferentes perfiles segn el mbito de la conexin, Esta clase va dirigida a aquellas personas que todava no utilizan un Framework y siguen trabajando directamente sobre PHP.

Wap gratis para celulares de claro y movistar


Bueno gente aca les dejo algo muy util (ES MI PRIMER POST)yo lo probe con un sony ericcson k800 con la Empresa Claro y me funciona perfectamente

ACLARACION:TENES QUE TENER MINIMO 0.50 CENTAVOS DE CREDTIO PARA ACCEDER PERO TE RECUERDO QUE ES GRATIS ESTOS CENTAVOS NO SE GASTAN

Configuracin WAP y MMS Internet Gratis en tu Celular Claro, Movistar

Parmetros de Movistar Configuracin WAP Internet Movil WAP GPRS Homepage: wap.e-mocion.com.pe:8582/2006gsm.wml IP: 200.4.196.117 Puerto: 8080 APN: wap.movistar.pe Usuario: movistar@wap Contrasea: movistar Configuracin MMS Mensajes Multimedia (MMS) Server: mmsc.telefonicamovistar.com.pe:8088/mms/ IP: 200.4.196.118 Puerto: 8080 APN: mms.movistar.pe Usuario: movistar@mms Contrasea: movistar Parmetros de Claro

Configuracin WAP 1.- Menu--> Ajustes--> Conectividad--> Comunicacin datos--> Cuenta de Datos--> Nueva Cuenta--> Datos PS Nombre: WAP GPRS APN: wap.claro.pe Nombre de usuario: claro Contrasea: claro (GUARDAR)

2.- Menu--> Ajustes--> Conectividad--> Ajustes Internet--> Perfiles Internet--> Nuevo perfil Nombre: Wap Conectar con: WAP GPRS (GUARDAR)

3.- Ir sobre el perfil creado Wap y seleccionas "mas"--> Ajustes Uso de Proxy: Si Direccin de Proxy: 192.168.231.30 Nmero de puerto: 80

Configuracin MMS 1.- Men--> Ajustes--> Conectividad--> Comunic. de datos--> Cuentas de datos--> Nueva cuenta--> Datos PS Nombre: MMS GPRS APN: mms.claro.pe Nombre de usuario: claro Contrasea: claro (GUARDAR)

2.- Men--> Ajustes--> Conectividad--> Ajustes Internet--> Perfiles Internet--> Nuevo perfil Nombre: Claro MMS Conectar usando: (seleccione la cuenta que creaste anteriormente--> MMS GPRS ) (GUARDAR)

3.- En el perfil que acabamos de creear (Claro MMS) y le das en MS. Luego AJUSTES. Uso de Proxy diga: SI

Direccin de proxy: 192.168.231.30 Nmero de puerto: 80 (GUARDAR) 4.- Men--> Mensajes--> Ajustes--> Msj con imagen--> Perfil MMS--> Nuevo perfil Nombre Perfil MMS: MULTIMEDIA Servidor de msjs: http://claro/servlets/mms Perfil de internet: Claro MMS (GUARDAR)

POR FAVOR AYUDEN A QUE SEA FULL USER O POR LO MENOS AGRADESCAN JEJEJE SALUDOS TARINGUEROS

Bueno, aqui te dejo la configuracion de MMS, WAP e INTERNET de mi W580i de la Compaia CLARO - EL SALVADOR. Para aquellos que al terminar de Flashar su telefono SE y se dan cuenta que el WAP y el MMS no estan configurados, asi que a todos los que les paso ese problema, incluyendome a mi con un W300i aqui los ayudo con estas configuraciones (recuerden que son para El Salvador). Configuracion WAP PASO UNO: Men--> Ajustes--> Conectividad --> Comunic. de datos--> Cuentas de datos--> Nueva cuenta--> Datos GPRS-> Nombre: WAP CLARO APN: wap.ideasclaro Nombre de usuario: Contrasea: (GUARDAR) PASO DOS: Men--> Ajustes--> Conectividad--> Ajustes Internet--> Perfiles Internet--> Nuevo perfil--> Nombre: WAP CLARO Conectar usando: WAP CLARO Uso de Proxy: SI Direccin de proxy: 216.230.133.066 Nmero de puerto: 8080 (GUARDAR)

Configuracion MMS PASO UNO: Men--> Ajustes--> Conectividad--> Comunic. de datos--> Cuentas de datos--> Nueva cuenta--> Datos GPRS-> Nombre: MMS CLARO APN: mms.ideasclaro Nombre de usuario: Contrasea: (GUARDAR) PASO DOS: Men--> Ajustes--> Conectividad--> Ajustes Internet--> Perfiles Internet--> Nuevo perfil--> Nombre: MMS CLARO Conectar usando: MMS CLARO Uso de Proxy: SI Direccin de proxy: 216.230.133.066 Nmero de puerto: 8080 (GUARDAR) PASO TRES: Men--> Mensajes--> Ajustes--> Msj con imagen--> Perfil MMS--> Nuevo perfil--> Nombre Perfil MMS: MMS CLARO Servidor de msjs: [Solo usuarios registrados pueden ver los enlaces.] Perfil de internet: MMS CLARO (GUARDAR) Configuracion Internet CLARO

PASO UNO: Men--> Ajustes--> Conectividad--> Comunic. de datos--> Cuentas de datos--> Nueva cuenta--> Datos GPRS-> Nombre: Internet CLARO APN: internet.ideasclaro Nombre de usuario: Contrasea: (GUARDAR) PASO DOS: Men--> Ajustes--> Conectividad--> Ajustes Internet--> Perfiles Internet--> Nuevo perfil--> Nombre: Internet CLARO Conectar usando: Internet CLARO Uso de Proxy: NO Direccin de proxy: Nmero de puerto: (GUARDAR)

NOTA: Al finalizar de crear los tres perfiles de Internet debe de quedar selecionado el perfil WAP CLARO, de esta manera: Men--> Ajustes--> Conectividad--> Ajustes Internet--> Perfiles Internet, y seleccionas y quedara con un punto a la parte, de esta forma: (.)WAP CLARO Se debe de seguir cada uno de los pasos antes mencionados para que la configuracion pueda ser efectiva, en los casos como por ejemplo: "Nombre de Usuario" o "Contrasea" deben de quedar vacios, asi como cualquier otro en el cual no haya puesto su respectiva seleccin. ENKONTRE ESTO TAMBIEN

Tigo WAP wap Nombre de cuenta: WAP Tigo APN o Punto de acceso: wap.tigo.sv WAP Gateway o Punto IP: 10.16.17.20 Nombre de Usuario: Dejar vacio Contrasea o Password: Dejar vacio Pgina de inicio: http://wap.tigo.com.sv MMS mms Nombre de cuenta: MMS Tigo APN o Punto de acceso: mms.tigo.sv WAP Gateway o Punto IP: 10.16.17.12 Nombre de Usuario: Contrasea o Password: Pgina de inicio: http://mms

Puedes vistar mi web http://celularesxkass.blogspot.com/

hace 3 aos Notificar un abuso

Puntuacin del usuario que pregunta: Comentario de la persona que pregunta: gracias

Potrebbero piacerti anche