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

Clases PHP

Estas en el tema de Clases PHP en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, He de crear una clase en PHP que me permita conectarme a una base de datos, y modificar, insertar y eliminar datos. ...
  #1 (permalink)  
Antiguo 29/11/2011, 01:07
 
Fecha de Ingreso: octubre-2011
Ubicación: Barcelona
Mensajes: 115
Antigüedad: 12 años, 6 meses
Puntos: 4
Clases PHP

Hola a todos,
He de crear una clase en PHP que me permita conectarme a una base de datos, y modificar, insertar y eliminar datos. He buscado por Internet y no he encontrado mucha información, y en los manuales y libros que tengo no lo veo claro.

A ver si podéis echarme una mano.

Gracias!!!!
  #2 (permalink)  
Antiguo 29/11/2011, 04:05
Avatar de tit0  
Fecha de Ingreso: agosto-2011
Ubicación: España
Mensajes: 6
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Clases PHP

Te voy a dejar un manual buenísimo que amí me ayudo bastante. Está en inglés, pero es bastante sencillo de entender.

http://www.elated.com/articles/cms-in-an-afternoon-php-mysql/

Cita:
Copia y pega el enlace en el navegador, ya que no me deja agregarlo como una URL
  #3 (permalink)  
Antiguo 29/11/2011, 07:54
 
Fecha de Ingreso: julio-2010
Mensajes: 275
Antigüedad: 13 años, 9 meses
Puntos: 21
Respuesta: Clases PHP

Una vez tuve la idea de hacer un formulario que Agregara, Eliminara, Modificara y Buscara en la misma página, utilizando Javascript, PHP y PostgeSQL, me quedó algo así...
Yo tengo dos clases distintas:
Una para las consultas a la base de datos
Código PHP:
Ver original
  1. <?
  2. class Cls_conexion
  3. {
  4.     function conectar_bd()
  5.     {
  6.         $this->driver="";
  7.         $this->host="";
  8.         $this->dbname="";
  9.         $this->port="";
  10.         $this->user="";
  11.         $this->clave="";
  12.         $this->conexion = pg_connect("host='$this->host' dbname='$this->dbname' user='$this->user' password='$this->clave'");
  13.  
  14.     }
  15.     function obtener_objetos($recurso)
  16.     {
  17.         return pg_fetch_object($recurso);
  18.     }
  19.     function obtener_array($recurso)
  20.     {
  21.         return pg_fetch_array($recurso);
  22.     }
  23.     function num_columnas($query)
  24.     {
  25.         return pg_num_rows($query);
  26.     }
  27.     function desconectar_bd()
  28.     {
  29.         pg_close();
  30.     }
  31.     function consultar($sql)
  32.     {
  33.          return pg_query($sql);
  34.     }      
  35. }
  36.  ?>

Código PHP:
Ver original
  1. <?
  2. class Cls_certificado
  3. {
  4.     function Insertar_Certificado($certificado)
  5.     {
  6.         $this->conex=new Cls_conexion();
  7.         $this->conex->conectar_bd();
  8.         $this->sql="insert into certificado (cert_cod) values ('$certificado')";
  9.         $this->conexion=$this->conex->consultar($this->sql);       
  10.         $this->conex->desconectar_bd();
  11.         return $this->conexion;
  12.     }
  13.    
  14.     function Modificar_Certificado($certificado,)
  15.     {
  16.         $this->conex=new Cls_conexion();
  17.         $this->conex->conectar_bd();
  18.         $sql="update certificado set cert_cod='$certificado' where cert_cod='$certificado'";
  19.         $conexion=$conex->consultar($sql);     
  20.         $conex->desconectar_bd();
  21.         return $conexion;
  22.     }
  23.     function buscar_certificado($certificado)
  24.     {
  25.         $this->conex=new Cls_conexion();
  26.         $this->conex->conectar_bd();
  27.         $this->sql="select cert_cod from certificado where cert_cod='$certificado'";
  28.         $this->conexion=$this->conex->consultar($this->sql);
  29.         $this->resultado=$this->conex->obtener_objetos($this->conexion);
  30.         $this->conex->desconectar_bd();
  31.         return $this->resultado;
  32.     }
  33.     function listar_certificado()
  34.     {
  35.         $this->sql="select cert_cod from certificado where TRUE";
  36.         $this->conexion=pg_query($this->sql);
  37.         return $this->conexion;
  38.     }
  39. }
  40. ?>

y otro archivo donde se analizan los datos del formulario y dependiendo de cada opción se utilizan las funciones de las clases.

Código PHP:
Ver original
  1. include('../Clases/Cls_conexion.php');
  2. include('../Clases/Cls_certificado.php');
  3. $cls_certificado=new Cls_certificado();
  4. if($agregar_certificado=='' and isset($certificado))
  5. {
  6.     $insertado=$cls_certificado->Modificar_Certificado($certificado);
  7.     if($insertado)     
  8.     {
  9.         echo "insercion exitosa";
  10.     }
  11.     elseif(!$insertado)
  12.     {
  13.         echo "no se insertaron los datos";
  14.     }
  15. }
  16. elseif($certificado)
  17. {
  18.     $cert=$agregar_certificado; //Se cambia la variable para insertar
  19.     $modificado=$cls_certificado->Insertar_Certificado($cert);
  20.     if($modificado)    
  21.     {
  22.         echo "insercion exitosa";
  23.     }
  24.     elseif(!$modificado)
  25.     {
  26.         echo "no se insertaron los datos";
  27.     }
  28. }
  #4 (permalink)  
Antiguo 29/11/2011, 11:54
 
Fecha de Ingreso: octubre-2011
Ubicación: Barcelona
Mensajes: 115
Antigüedad: 12 años, 6 meses
Puntos: 4
Respuesta: Clases PHP

Ante todo muchas gracias por las respuestas!!!
Pero que diferencia hay entre la primera clase y la segunda?
Y que es PostgeSQL?

Lo siento es que acabo de empezar con esto y ando un poco perdido

Gracias!!!
  #5 (permalink)  
Antiguo 29/11/2011, 12:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Clases PHP

PostgreSQL es otro manejador de BDDs como MySQL, Oracle, MSSQL, etc.
  #6 (permalink)  
Antiguo 29/11/2011, 12:21
Avatar de efex_  
Fecha de Ingreso: noviembre-2011
Mensajes: 17
Antigüedad: 12 años, 5 meses
Puntos: 4
Respuesta: Clases PHP

Creo que deberias empezar desde 0 e ir viendo programación orientada a objetos, te dejo un enlace bastante completo para empezar:

Cita:
www.phpya.com.ar/poo/
Se puede trabajar con PostgreSQL en php, igual que Mysql, solo que cambian las funciones.

Código PHP:
<?php
// Nos conectamos a la base de datos
$dbconn pg_connect("host=localhost dbname=nombredelabasededatos user=usuario password=contraseña")
    or die(
'Could not connect: ' pg_last_error());
// Haciendo un query a la base de datos
$query 'SELECT * FROM tabla';
$result pg_query($query) or die('Query failed: ' pg_last_error());
// Mostrarlo por pantalla
echo "<table>\n";
while (
$line pg_fetch_array($resultnullPGSQL_ASSOC)) {
    echo 
"\t<tr>\n";
    foreach (
$line as $col_value) {
        echo 
"\t\t<td>$col_value</td>\n";
    }
    echo 
"\t</tr>\n";
}
echo 
"</table>\n";
// libera la memoria y los datos asociados con el query
pg_free_result($result);
// Cerrar la conexión
pg_close($dbconn);
?>
  #7 (permalink)  
Antiguo 29/11/2011, 14:16
 
Fecha de Ingreso: julio-2010
Mensajes: 275
Antigüedad: 13 años, 9 meses
Puntos: 21
Respuesta: Clases PHP

En la primera clase está la conexion a la base de datos y la ejecucion de las sentencias SQL, en la segunda clase hice el cuerpo de cada función y en el archivo están los llamados a los metodos de cada clase....

es algo así: Archivo -> Funciones -> Conexiones
  #8 (permalink)  
Antiguo 29/11/2011, 16:47
 
Fecha de Ingreso: enero-2008
Ubicación: Buenos Aires
Mensajes: 305
Antigüedad: 16 años, 3 meses
Puntos: 14
Respuesta: Clases PHP

Sirrohan, si en todos tus métodos conectas a la bd, no es más lógico hacer la conección a la bd en el constructor de la clase?
  #9 (permalink)  
Antiguo 30/11/2011, 06:19
 
Fecha de Ingreso: octubre-2011
Ubicación: Barcelona
Mensajes: 115
Antigüedad: 12 años, 6 meses
Puntos: 4
Respuesta: Clases PHP

Esto estaria bien?

Código PHP:
 class conectarBD
        var 
$servidor;
        var 
$usuario;
        var 
$password;
        
        function 
__construct($servidor,$usuario$password){ 
            
$this->servidor=$servidor
            
$this->usuario=$usuario
            
$this->password=$password;
        }
        
        function 
conectar(){ 
            
$conexionmysql_connect($this->servidor$this->usuario$this->password);
            
mysql_select_db ("basededatos"$conexion);
        } 
    }

    
//Para conectarnos a la base de datos
    
$conect = new conectarBD("localhost""root""");
    
$conect->conectar();
    
    class 
modificarBD{
   
        var 
$tabla;
        var 
$values;
        var 
$campos;
        var 
$ordenar;
        
        function 
__construct($tabla,$where,$values,$campos,$ordenar){ 
            
$this->tabla=$tabla
            
$this->values=$values
            
$this->campos=$campos;
            
$this->where=$where;
            
$this->ordenar=$ordenar;
        }
        
        function 
insertar(){ 
             
$add"insert into $this->tabla $this->campos values $this->values";
        }
        
        function 
consultar(){
            
$registrosmysql_query("SELECT $this->tabla FROM $this->campos WHERE $this->where='$this->values' $this->ordenar "$conexion) or die (mysql_error ()); 
        }
        
        function 
modificar(){
            
$edit mysql_query("UPDATE `basededatos`.`usuarios` SET `nombre` = \'nombre\' WHERE `usuarios`.`id_usuario` = 25;"$conexion) or die (mysql_error ());
        }
    } 
  #10 (permalink)  
Antiguo 30/11/2011, 09:39
Avatar de efex_  
Fecha de Ingreso: noviembre-2011
Mensajes: 17
Antigüedad: 12 años, 5 meses
Puntos: 4
Respuesta: Clases PHP

Cita:
Iniciado por Gilad Ver Mensaje
Esto estaria bien?
Sep, bien aplicado
  #11 (permalink)  
Antiguo 30/11/2011, 10:08
 
Fecha de Ingreso: octubre-2011
Ubicación: Barcelona
Mensajes: 115
Antigüedad: 12 años, 6 meses
Puntos: 4
Respuesta: Clases PHP

El $this->variable tiene que usarse siempre?
  #12 (permalink)  
Antiguo 30/11/2011, 15:35
 
Fecha de Ingreso: noviembre-2011
Mensajes: 7
Antigüedad: 12 años, 5 meses
Puntos: 2
De acuerdo Respuesta: Clases PHP

Cita:
Iniciado por Gilad Ver Mensaje
El $this->variable tiene que usarse siempre?
el $this->variable tienes que usarlo siempre que hayas declarado una propiedad o variable en tu clase por ejemplo:

Código PHP:
Ver original
  1. <?php
  2. class nueva()
  3. {
  4. public $var1
  5. public $var2
  6.  
  7. //entonces si mas adelante de tu codigo vas a declarar $var1 en otro x metodo//lo puedes hacer usando $this->var1 que esta te sirve para hacer referencias //dentro de las clases
  8.  
  9. //a las propiedades tambien puedes darles valores iniciales:
  10. public $var1 = 15;
  11. public $var2 = "andres";
  12. }
  13. ?>

Te dejo esta clase que yo uso para conectarme a la base de datos:

Código PHP:
Ver original
  1. <?php
  2. require_once(LIB_DIR.SD."config.php");
  3. //el archivo config contiene las constantes que declaran los datos necesarios para
  4. //conectarse al servidor.
  5.  
  6. class database
  7. {
  8.     private $conexion;
  9.     private $ultima_consulta;
  10.    
  11.     function __construct()
  12.     {
  13.         $this->abrir_conexion();
  14.     }
  15.    
  16.     public function abrir_conexion()
  17.     {
  18.         $this->conexion = mysql_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD);
  19.         if(!$this->conexion)
  20.         {
  21.             die("No se pudo conectar a la base de datos: ". mysql_error());
  22.         }
  23.         else
  24.         {
  25.             $bd_selec = mysql_select_db(DB_NAME,$this->conexion);
  26.             if(!$bd_selec)
  27.             {
  28.                 die("No se pudo seleccionar la tabla de contenido: ". mysql_error());
  29.             }
  30.         }
  31.     }
  32.    
  33.     public function enviar_consulta($sql)
  34.     {
  35.         $this->ultima_consulta = $sql;
  36.         $resultado = mysql_query($sql,$this->conexion);
  37.         $this->verificar_consulta($resultado);
  38.         return $resultado;
  39.     }
  40.    
  41.     private function verificar_consulta($consulta)
  42.     {
  43.         if(!$consulta)
  44.         {
  45.             $salida = "No se pudo realizar la consulta: " . mysql_error();
  46.             $salida .= "<br /> Ultima consulta SQL: ".$this->ultima_consulta;
  47.             die($salida);
  48.         }
  49.     }
  50.    
  51.     public function cerrar_conexion()
  52.     {
  53.         if(isset($this->conexion))
  54.         {
  55.             mysql_close($this->conexion);
  56.             unset($this->conexion);
  57.         }
  58.     }
  59. }
  60.  
  61. $bd = new database();
  62. ?>

Espero haberte ayudado.

Etiquetas: bbdd., clases
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:07.