Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO que opinan de esta class Mysql, sugerencias se agradecen.

Estas en el tema de que opinan de esta class Mysql, sugerencias se agradecen. en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Config.php Código PHP: <?php global  $host , $bd , $user , $pass ; $host = 'localhost' ; $bd = 'mydb' ; $user = 'root' ; ...
  #1 (permalink)  
Antiguo 12/03/2011, 18:17
 
Fecha de Ingreso: enero-2011
Ubicación: CIX
Mensajes: 6
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta que opinan de esta class Mysql, sugerencias se agradecen.

Config.php

Código PHP:
<?php
global $host,$bd,$user,$pass;
$host='localhost';
$bd='mydb';
$user='root';
$pass='';
?>
Classmysql

Código PHP:
<?php
class DB_mysql {
/* variables de conexión */
var $BaseDatos;
var 
$Servidor;
var 
$Usuario;
var 
$Clave;
/* identificador de conexión y consulta */
var $Conexion_ID 0;
var 
$Consulta_ID 0;
/* número de error y texto error */
var $Errno 0;
var 
$Error "";
/* Método Constructor: Cada vez que creemos una variable
de esta clase, se ejecutará esta función */
function DB_mysql($bd ""$host ""$user ""$pass "") {
$this->BaseDatos $bd;
$this->Servidor $host;
$this->Usuario $user;
$this->Clave $pass;
}
/*Conexión a la base de datos*/
function conectar($host$bd$user$pass){
if (
$bd != ""$this->BaseDatos $bd;
if (
$host != ""$this->Servidor $host;
if (
$user != ""$this->Usuario $user;
if (
$pass != ""$this->Clave $pass;
// Conectamos al servidor
$this->Conexion_ID mysql_connect($this->Servidor$this->Usuario$this->Clave);
if (!
$this->Conexion_ID) {
$this->Error "Ha fallado la conexión.";
return 
0;
}
//seleccionamos la base de datos
if ([email protected]mysql_select_db($this->BaseDatos$this->Conexion_ID)) {
$this->Error "Imposible abrir ".$this->BaseDatos ;
return 
0;
}
/* Si hemos tenido éxito conectando devuelve
el identificador de la conexión, sino devuelve 0 */
return $this->Conexion_ID;
}
/* Ejecuta un consulta */
function consulta($sql ""){
if (
$sql == "") {
$this->Error "No ha especificado una consulta SQL";
return 
0;
}
//ejecutamos la consulta
$this->Consulta_ID = @mysql_query($sql$this->Conexion_ID);
if (!
$this->Consulta_ID) {
$this->Errno mysql_errno();
$this->Error mysql_error();
}
/* Si hemos tenido éxito en la consulta devuelve
el identificador de la conexión, sino devuelve 0 */
return $this->Consulta_ID;
}
/* Devuelve el número de campos de una consulta */
function numcampos() {
return 
mysql_num_fields($this->Consulta_ID);
}
/* Devuelve el número de registros de una consulta */
function numregistros(){
return 
mysql_num_rows($this->Consulta_ID);
}
function 
cerrar_conexion(){
return 
mysql_close($this->conexion_ID);
}
/*¨utilizar para crear un loggin*/
function verifica($cla,$usu)
    {
    
$this->consulta("SELECT * FROM persona where per_dni='$usu' and per_estado<>0");
    if(
mysql_num_rows($this->Consulta_ID)==0){
    echo 
"El usuario ingresado no existe o ha sido eliminado";
    echo(
"<META HTTP-EQUIV='refresh'content='0.1;URL='index.php'>");
    }else{
    
$row=mysql_fetch_array($this->Consulta_ID);
    
$c=$row["emp_pas"];
    
$u=$row["per_codigo"];
    
$nom=$row["per_nombre"];
    
$ape=$row["per_apellido"];
    
$dni=$row["per_dni"];
    
$tipo=$row["per_tipo"];
    if(
strcmp($cla,$c)==0){
    
session_name("$nom");
    
$_SESSION['usuario']['entro']='positivo';
    
$_SESSION['usuario']['id']=$u;
    
$_SESSION['usuario']['nom']=$nom;
    
$_SESSION['usuario']['tipo']=$tipo;
    
$_SESSION['usuario']['ape']=$ape;
    
$_SESSION['usuario']['dni']=$dni;

    echo(
"<b class='titulo1'>Bienvenido:$nom $ape - [$dni] </b><br><br>");
    echo(
"<META http-equiv='refresh'content='0.1;URL=index.php'>");
    }else{
    echo 
"La clave no es correcta";
    echo(
"<META http-equiv='refresh'content='0.1;URL=index.php'>");
    }
    }
}
}
//fin de la Clse DB_mysql
?>
Gente, se agradece sus comentarios y sus sugerencias para hacer esta clase ROBUSTA.
  #2 (permalink)  
Antiguo 12/03/2011, 19:04
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 19 años, 2 meses
Puntos: 60
Respuesta: que opinan de esta class Mysql, sugerencias se agradecen.



Bueno, en realidad no se cual sea la finalidad de tu clase de conexión sin embargo rompe con todos los esquemas de lo que es la buena programación Orientada a Objetos.

1.- NO estas separando responsabilidades en objetos mas pequeños responsables de hacer cosas que NO tienen que ver con una de un objeto que conecta a una base de datos.

2.- Estas usando variables globales, muy mala practica, deberías de checar el Patron Registry.

3.- Por lo regular se considera MAL que un método imprima HTML la función natural debe de ser regresar respuestas, debería de haber un objeto encargado de procesar la VISTA o el resultado en html y más si es una redirección muy mal hecha.

¿Que hace el método Verificar(); ? en esta clase?

En fin creo que necesitas revisar varios ejemplos que se han dado por aqui, busca por PDO, Zend_Db o bien Adaptador de Base de datos.
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador

Última edición por _ssx; 12/03/2011 a las 19:10
  #3 (permalink)  
Antiguo 12/03/2011, 19:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 13 años, 2 meses
Puntos: 1517
Respuesta: que opinan de esta class Mysql, sugerencias se agradecen.

Lo que te recomiendo es que mejor aprendas a trabajar con una clase que hace la conexion, que hacer una. Lee sobre PDO.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 12/03/2011, 19:50
 
Fecha de Ingreso: enero-2011
Ubicación: CIX
Mensajes: 6
Antigüedad: 11 años, 6 meses
Puntos: 0
De acuerdo Respuesta: que opinan de esta class Mysql, sugerencias se agradecen.

Cita:
Iniciado por _ssx Ver Mensaje


Bueno, en realidad no se cual sea la finalidad de tu clase de conexión sin embargo rompe con todos los esquemas de lo que es la buena programación Orientada a Objetos.

1.- NO estas separando responsabilidades en objetos mas pequeños responsables de hacer cosas que NO tienen que ver con una de un objeto que conecta a una base de datos.

2.- Estas usando variables globales, muy mala practica, deberías de checar el Patron Registry.

3.- Por lo regular se considera MAL que un método imprima HTML la función natural debe de ser regresar respuestas, debería de haber un objeto encargado de procesar la VISTA o el resultado en html y más si es una redirección muy mal hecha.

¿Que hace el método Verificar(); ? en esta clase?

En fin creo que necesitas revisar varios ejemplos que se han dado por aqui, busca por PDO, Zend_Db o bien Adaptador de Base de datos.
Gracias por la sugerencia, podrías recomendarme una buena clase para comenzar a realizar una aplicación? Gracias.
  #5 (permalink)  
Antiguo 12/03/2011, 21:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 13 años, 2 meses
Puntos: 1517
Respuesta: que opinan de esta class Mysql, sugerencias se agradecen.

Ya te recomende una, verifica PDO.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 13/03/2011, 08:47
Avatar de historiasdemaria  
Fecha de Ingreso: septiembre-2010
Ubicación: www
Mensajes: 433
Antigüedad: 11 años, 10 meses
Puntos: 54
Respuesta: que opinan de esta class Mysql, sugerencias se agradecen.

Bueno, recientemente tuve que trabajar en un servidor donde no podia compilar o instalar PDO y tuve que escribir urgentemente un clase que gestionara la base de datos.

Aqui hay un ejemplo de una clase asi: http://freedelta.free.fr/r/php-code-...wrapper-class/

En ese ejemplo hay que rellenar las variables:

Código PHP:
Ver original
  1. $server="";            
  2. $dbname="";            
  3. $user="";            
  4. $password="";

con tus valores propios


puede que te sirva, pero como te han recomendado, si puedes usar PDO que es mas robusto mejor ;)

Última edición por historiasdemaria; 13/03/2011 a las 09:27
  #7 (permalink)  
Antiguo 13/03/2011, 09:56
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 12 años, 3 meses
Puntos: 461
Respuesta: que opinan de esta class Mysql, sugerencias se agradecen.

en el tema anterior que colocabas te indicaba tal y como te dijo abimaelrc en este tema que trabajaras con PDO, incluso puedes extender de esta y crear tus propios metodos donde traigas tus datos, creo que tambien te indique un tema donde me dijeron mas o menos lo que te indicaban a ti y fuimos porque me ayudaron bastante creando una clase, ademas en el foro hay otros temas parecidos donde aportan mas a este tipo de clase, historiasdemaria, tal y como me lo indicaron los amigos del foro a mi en el post que le indico al amigo las clases de conexion no deben de limitarse a una sola instancia utilizando singleton, vean las recomendaciones que me dieron en el post que les indico, donde cometi como 500 mil errores y los amigos me ayudaron a acomodarlos, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #8 (permalink)  
Antiguo 13/03/2011, 10:37
Avatar de historiasdemaria  
Fecha de Ingreso: septiembre-2010
Ubicación: www
Mensajes: 433
Antigüedad: 11 años, 10 meses
Puntos: 54
Respuesta: que opinan de esta class Mysql, sugerencias se agradecen.

Si, recuerdo muy bien esa recomendacion sobre el uso de Singleton, cuando con la misma clase se va a conectar a MySql, Postgre u otras conexiones a partir de la misma clase. http://www.forosdelweb.com/f18/estoy...1/#post3572245
No significa que no se deba de usar este patron en este caso.

En este caso se trata solo de MySql y que yo sepa seria habla de una conexion a de una sola base de datos o sistemas gestores de bases de datos.
  #9 (permalink)  
Antiguo 17/03/2011, 15:19
 
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: que opinan de esta class Mysql, sugerencias se agradecen.

Viendo el script me parece que estas aprendiendo POO para PHP4, deberias buscarte algo actualizado, te recomiendo que leas este libro: PHP Objects Patterns and Practice
  #10 (permalink)  
Antiguo 17/03/2011, 23:27
 
Fecha de Ingreso: enero-2011
Ubicación: CIX
Mensajes: 6
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: que opinan de esta class Mysql, sugerencias se agradecen.

Gracias a todos por sus comentarios y sugerencias, la verdad me esta sirviendo mucho esto, les comento; estoy empezando a desarrollar un Sistema de Papeleta de salida(Permisos), por eso es que estaba viendo ya no utilizar la programación procedimental si no POO por cual motivo estaba viendo un patrón de diseño. El comentario del amigo : historiasdemaria y carlos_belisario, y les doy la razón, voy ha utilizar Patrón Factory Method, ya que voy a utilizar una misma clase para conectar a MySql, Postgre.

Etiquetas: clase-php-mysql, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:50.