Foros del Web » Programando para Internet » PHP »

lo estoy haciendo bien??

Estas en el tema de lo estoy haciendo bien?? en el foro de PHP en Foros del Web. bueno nuevamente aki por el foro de poo e leido algunos tutoriales y con ayuda de ustedes cree la primera clase q coloq hac algun ...

  #1 (permalink)  
Antiguo 14/08/2010, 23:17
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Pregunta lo estoy haciendo bien??

bueno nuevamente aki por el foro de poo e leido algunos tutoriales y con ayuda de ustedes cree la primera clase q coloq hac algun tiempo era una clase super sencilla ahorita dentro de los tutoriales q he estado leyendo esta la herencia y quic practicarla un poco pero no estoy seguro de si lo hic bien esta funciona pero esta bien?? q pudiera mejorar?? por favor es q estoy mal acostumbrado a la programacion estructurada aki el codigo es una clase asi como la q habia puesto antes de conexion pero le agreg el introducir datos para ver si aprendi algo de lo de trabajar con herencia espero sus respuestas gracias de antemano
Código PHP:
class conexion
{
    protected 
$mysqlHost;
    protected 
$mysqlUser;
    protected  
$mysqlPass;
    protected 
$db;
    protected  
$connect;
    protected 
$query;
    protected 
$row;
    public function 
__construct($mysqlHost="localhost",$mysqlUser="root",$mysqlPass=""#colocamos el usuario normalmente utilizado
    
{
        
$this->mysqlHost=$mysqlHost;
        
$this->mysqlUser=$mysqlUser;
        
$this->mysqlPass=$mysqlPass;
        
$this->conectar();        
    }
    protected function 
conectar()
    {
        
$this->connect=@mysql_connect($this->mysqlHost,$this->mysqlUser,$this->mysqlPass) or die ("no se pudo conectar con el servidor ".mysql_error());        
    }
    public function 
selectDb($db="db"#colocamos la base de datos normalmente utilizada
    
{
        @
mysql_select_db($db) or die ("Error al conectar con base de datos ".mysql_error());    
    }
    public function 
ejecutarSentencia($query,$result=false)#si result es true trae el resultado si es falso trae el Resource id
    
{
        
$this->query=mysql_query($query) or die (mysql_error());
        if(
$result==true){
            
$this->mostrarResultados($this->query);
            return 
$this->result;
        }else{            
            return 
$this->query;
        }    
    }
    public function 
mostrarResultados($query)    
    {
        while(
$this->row=mysql_fetch_assoc($query))
        {
            
$this->result[]=$this->row;            
        }
        return 
$this->result;
    }
    public function 
liberar()
    {
        
mysql_free_result();
    }
    public function 
desconectar()
    {
        
mysql_close();
    }
}
class 
insertar extends conexion{
    protected 
$campos;    
    protected 
$valores;
    protected 
$table;
    protected 
$values;
    protected 
$camposImo;
    public function 
__construct($tabla="",$campos="",$valores=""){
        if(empty(
$tabla) || empty($campos) || empty($valores)){
            echo 
"Debe inicializar la clase para insertar datos";        
            return 
false;
        }    
        
$this->tabla=$tabla;
        
$this->campos=$campos;
        
$this->valores=$valores;                        
        
$this->tratarDatos();
    }
    protected function 
tratarDatos(){
        
$this->tabla=htmlentities(trim($this->tabla));        
        foreach(
$this->campos as $id=>$values){
            
$this->campos[$id]=htmlentities(trim($values));
            
$this->valores[$id]=htmlentities(trim("'".$this->valores[$id]."'"));            
        }
        
$this->camposImo=implode(",",$this->campos);
        
$this->value=implode(",",$this->valores);
        
$this->insertar();        
    }
    protected function 
insertar(){
        
parent::ejecutarSentencia("INSERT INTO ".$this->tabla." (".$this->camposImo.") VALUES (".$this->value.");") or die (mysql_error());        
    }
}
##############################################################################
################### pruebas a la clase #######################################
##############################################################################
$campos=array("nombre","apellido","cedula","correo");
$valores=array("nombre","apellido",12345647841,"correo");
$conect=new conexion();
$conect->selectDb("db");
$insertar=new insertar("tabla",$campos,$valores);
$result=$conect->ejecutarSentencia("select * from tabla",true); 
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Última edición por carlos_belisario; 16/08/2010 a las 21:52
  #2 (permalink)  
Antiguo 24/08/2010, 21:59
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: lo estoy haciendo bien??

Hola compañero de reto...
Mira este enlace de Herencia....
http://phpsenior.blogspot.com/2007/1...ncipio-de.html
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #3 (permalink)  
Antiguo 24/08/2010, 22:13
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

Cita:
Iniciado por portalmana Ver Mensaje
Hola compañero de reto...
Mira este enlace de Herencia....
http://phpsenior.blogspot.com/2007/1...ncipio-de.html
muy bueno el tema del link yo me imagine que la herencia q estaba planteando estaba mal ya que podria ir directamente dentro de la clase que coloque como padre pero como estaba leyendo un poco de eso quise hacr una prueba a ver si salia bien y q me indicaban gracias por el link esta muy bueno e instructivo 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
  #4 (permalink)  
Antiguo 25/08/2010, 22:13
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

buenas compañero portalmana tube un tiempito y acomode la clase para q no tubiera hijos q no tiene q tener jajaj ahi la acomode si me puedes dar algunos concejos los agradeceria incluso otro link donde leer un poco mas xq de verdad esto de poo es algo medio complicado pero hay q aprenderlo y documentarse saludos
Código PHP:
<?php 

class conexion{

    private 
$mysqlHost;

    private 
$mysqlUser;

    private 
$mysqlPass;

    private 
$db;

    private 
$connect;

    private 
$query;

    private 
$row;
    private 
$resultado;
    private 
$campos;    

    private 
$valores;

    private 
$table;

    private 
$values;

    private 
$campos_imp;

    public function 
__construct($mysqlHost="localhost",$mysqlUser="root",$mysqlPass="",$db="unefa"){
    
#inicializamos los datos de la clase y solicitamos la conexion con el servidor    

        
$this->mysqlHost=$mysqlHost;

        
$this->mysqlUser=$mysqlUser;

        
$this->mysqlPass=$mysqlPass;
        
$this->db=$db;

        
$this->conectar();        

    }

    private function 
conectar(){

        
$this->connect=mysql_connect($this->mysqlHost,$this->mysqlUser,$this->mysqlPass) or die ("no se pudo conectar con el servidor ".mysql_error());    
        
$this->select_db($this->db);#seleccionamos la base de datos q indicamos si deseamos cambiar usamos el metodo    

    
}

    public function 
select_db($db) {

        
mysql_select_db($db) or die ("Error al conectar con base de datos ".mysql_error());    

    }

    public function 
ejecutar_sentencia($query,$result=false){
    
#si result es true trae el resultado si es falso trae el Resource id

        
$this->query=mysql_query($query) or die (mysql_error());

        if(
$result==true){

            
$this->mostrar_resultados($this->query);            

            return 
$this->result;

        }
        else{            

            return 
$this->query;

        }    

    }

    public function 
mostrar_resultados($query){

        while(
$this->row=mysql_fetch_array($query)){

            
$this->result=$this->row;            

        }

        return 
$this->result;

    }

    public function 
liberar(){

        
mysql_free_result();

    }

    public function 
desconectar(){

        
mysql_close();

    }

    public function 
ultimo_id(){

        return 
mysql_insert_id ($this->connect); 

    }

    public function 
filas_afectadas(){

        return 
mysql_affected_rows($this->connect);

    }
    public function 
insertar_registro($tabla="",$campos="",$valores=""){
        if(empty(
$tabla) || empty($campos) || empty($valores)){

            echo 
"Debe indicar los datos para la insercion";        

            return 
false;

        }
        elseif(!
is_array($campos) || !is_array($valores){
            echo 
"Los campos deben estar en formato de arreglo";        
            return 
false;
        }   
        
$this->tabla=$tabla;

        
$this->campos=$campos;

        
$this->valores=$valores;                        

        
$this->tratar_datos();        
    }
    private function 
tratar_datos(){

        
$this->tabla=htmlentities(trim($this->tabla));        

        foreach(
$this->campos as $id=>$values){

            
$this->campos[$id]=htmlentities(trim($values));

            
$this->valores[$id]=htmlentities(trim("'".$this->valores[$id]."'"));            

        }

        
$this->campos_imp=implode(",",$this->campos);

        
$this->value=implode(",",$this->valores);

        
$this->insertar();        

    }
    private function 
insertar(){

        
$this->ejecutar_sentencia("INSERT INTO ".$this->tabla." (".$this->campos_imp.") VALUES (".$this->value.");") or die (mysql_error());        

    }



?>
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 26/08/2010, 08:37
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: lo estoy haciendo bien??

Tu función "mostrar_resultados" esta incorrecta ya que haces un loop y sobreescribes el valor del resultado todas las veces.

Saludos.
  #6 (permalink)  
Antiguo 26/08/2010, 10:00
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

gracias por la respuesta tienes mucha razon que me aconcejas declaro la variable como array y lo trabajo con mysql_fetch_assoc?? de manera q me cree array asociativo??
Código PHP:
Ver original
  1. $this->result[]=$this->row;
o lo trabajo sin el while directamente???
Código PHP:
Ver original
  1. $this->row=mysql_fetch_array($query);
gracias por la respuesta si tienes mas acotaciones de verdad me gusta q me indiquen en q estoy fallando para mejorar 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
  #7 (permalink)  
Antiguo 26/08/2010, 10:08
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: lo estoy haciendo bien??

Depende del uso si quieres regresar todos los resultados lo más recomendable es un array.

Saludos.
  #8 (permalink)  
Antiguo 26/08/2010, 10:11
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

Cita:
Iniciado por GatorV Ver Mensaje
Depende del uso si quieres regresar todos los resultados lo más recomendable es un array.

Saludos.
exactamente kiero mostrar todos los resultados entonces lo trabajo como array jaja creo q era mi idea al principio pero me falto el indicador jaja bueno gracias por la sugerencia
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #9 (permalink)  
Antiguo 26/08/2010, 15:25
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: lo estoy haciendo bien??

y libro libro.... yo lo que he aprendido de POO fue de un cursillo de Java y cosas por internet.... digamos de revolver forosss, pero me falta toda la parte de frameworks....

Saludos...
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #10 (permalink)  
Antiguo 26/08/2010, 15:32
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

Cita:
Iniciado por portalmana Ver Mensaje
y libro libro.... yo lo que he aprendido de POO fue de un cursillo de Java y cosas por internet.... digamos de revolver forosss, pero me falta toda la parte de frameworks....

Saludos...
bueno yo he aprendido documentandome por internet jaja claro ahora q me decidi a utilizar este tipo de programacion y bueno algunas consultas q e podido resolver en allgun foro y las q he echo para q me indiquen si voy bien xq cuando uno no tiene kien le diga no sab si esta bien o mal xq para uno esta bien pero al verlo alguien q sepa te concigue mil y un detalles y bueno ami si ahora es q me falta aprender de poo menos me he metido con frameworks jaja saludos gracias por las respuestas
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #11 (permalink)  
Antiguo 26/08/2010, 15:39
 
Fecha de Ingreso: agosto-2010
Mensajes: 4
Antigüedad: 13 años, 8 meses
Puntos: 1
Respuesta: lo estoy haciendo bien??

Yo te recomendaria que tambien apliques simgleton en tu clase conexion
  #12 (permalink)  
Antiguo 26/08/2010, 15:45
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

Cita:
Iniciado por neslip18 Ver Mensaje
Yo te recomendaria que tambien apliques simgleton en tu clase conexion
no habia escuchado el termino jaja voy a investigar bien sobre que trata ya lei algo mas o menos pero todavia no me qda muy claro gracias
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #13 (permalink)  
Antiguo 26/08/2010, 15:52
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 20 años, 11 meses
Puntos: 60
Respuesta: lo estoy haciendo bien??

Si quieres hacerlo bien desde un principio necesitas aplicar algo que en OOP se llama Separación de responsabilidades u obligaciones.

http://en.wikipedia.org/wiki/Separation_of_concerns

Los objetos están hechos para ser "entidades separadas" Desacopladas para poder hacer sistemas altamente escalables.

Observaciones a tu código.

1.- Decidete por un Estándar de codificación, si vas a usar "under_score" o "CamelCase", podrias seguir este.

http://framework.zend.com/wiki/displ...tandard+(draft)

2.- Separa en otros objetos responsabilidades (SQL,Validación de Datos, Adaptador de base de datos)

3.- Prefiere usar utf-8 en lugar de escapar cáracteres con htmlentities ya que tu DB quedara más limpia.

4.- Divide y venceras
__________________
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
  #14 (permalink)  
Antiguo 26/08/2010, 16:02
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

Cita:
Iniciado por _ssx Ver Mensaje
Si quieres hacerlo bien desde un principio necesitas aplicar algo que en OOP se llama Separación de responsabilidades u obligaciones.

http://en.wikipedia.org/wiki/Separation_of_concerns

Los objetos están hechos para ser "entidades separadas" Desacopladas para poder hacer sistemas altamente escalables.

Observaciones a tu código.

1.- Decidete por un Estándar de codificación, si vas a usar "under_score" o "CamelCase", podrias seguir este.

http://framework.zend.com/wiki/displ...tandard+(draft)

2.- Separa en otros objetos responsabilidades (SQL,Validación de Datos, Adaptador de base de datos)

3.- Prefiere usar utf-8 en lugar de escapar cáracteres con htmlentities ya que tu DB quedara más limpia.

4.- Divide y venceras
tremenda ayuda hermano buenas acotaciones yo tenia el estandar asi CamelCase pero lei q es mas entendible con el under_score y creo q en los estandar q me pasaste si son los de zend lo dice tambien pero gracias de verdad por el apoyo ahora tengo jabon para lavar jaja (en castellano q investigar) saludos y gracias si hay mas aportes los aagradesco
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #15 (permalink)  
Antiguo 26/08/2010, 16:27
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 20 años, 11 meses
Puntos: 60
Respuesta: lo estoy haciendo bien??

Veo que muchos aqui tratan de empezar a hacer sus "Clases de conexión" no obstante que les parece si hacemos un ejemplo un poco más OOP y mas robusto.

Misión: Crear una conexión con "cualquier base de datos" solo creando los adaptadores necesarios haciendo uso de interfaces.


DbInterface.php
Código PHP:
<?php

interface DbInterface
{
    public function 
conectar();
    public function 
desconectar();
    public function 
ejecutar(SQL $sql);
}
Db.php
Código PHP:
<?php
require_once 'DbInterface.php';
class 
Db
{
    private 
$db;
    
    public function 
__construct(MySQL $db)
    {
        
$this->db $db;
    }
    public function 
conectar()
    {
        
$this->db->conectar();
    }
    public function 
desconectar()
    {
        
$this->db->desconectar();
    }    
    public function 
ejecutar(SQL $sql)
    {
        return 
$this->db->ejecutar($sql);
    }
}
SQL.php

Código PHP:
<?php

class SQL
{
    private 
$consulta;
    private 
$campos = array();
    private 
$tablas = array();
    private 
$wheres = array();
    private 
$orders = array();
    
    public function 
addCampo($campo)
    {
        
$this->campos[] = $campo;
    }
    public function 
addTabla($tabla)
    {
        
$this->tablas[] = $tabla;
    }
    public function 
addWhere($where)
    {
        
$this->wheres[] = $where;
    }
    public function 
addOrder($or)
    {
        
$this->orders[] = $or;
    }
    private function 
make()
    {
        
$this->consulta 'SELECT ';
        foreach(
$this->campos as $campo){
            
$cadenaCampos.= ' '.$campo.', ';
        }
        
$this->consulta.= substr($cadenaCampos,0,strlen($cadenaCampos)-2);
        
$this->consulta.= ' FROM ';
        foreach(
$this->tablas as $tabla){
            
$cadenaTablas.= ' '.$tabla.', ';
        }
        
$this->consulta.= substr($cadenaTablas,0,strlen($cadenaTablas)-2);
        if(
count($this->wheres)!=0){
            
$this->consulta.= ' WHERE ';
            foreach(
$this->wheres as $where){
                
$cadenaWheres.= ''.$where.' AND ';
            }
            
$this->consulta.= substr($cadenaWheres,0,strlen($cadenaWheres)-4);
        }
        if(
count($this->orders)!=0){
            
$this->consulta.= ' ORDER BY ';
            foreach(
$this->orders as $order){
                
$cadenaOrders.= ''.$order.', ';
            }
            
$this->consulta.= substr($cadenaOrders,0,strlen($cadenaOrders)-2);
        }
        return 
$this->consulta;
    }
    public function 
get()
    {
        return 
$this->make();
    }
    public function 
toString()
    {
        return 
$this->make();
    }
}
MySQL.php
Código PHP:
<?php
require_once 'DbInterface.php';

class 
MySql implements DbInterface
{
    private 
$host;
    private 
$user;
    private 
$pass;
    private 
$db;
    private 
$datos = array();
    
    public function 
__construct()
    {
        
$args func_get_args();
        
$this->host $args[0];
        
$this->user $args[1];
        
$this->pass $args[2];
        
$this->db $args[3];
    }
    public function 
conectar()
    {
        
mysql_connect($this->host,$this->user,$this->pass);
        
mysql_select_db($this->db);
    }
    public function 
desconectar()
    {
        
mysql_close();
    }
    public function 
ejecutar(SQL $sql)
    {
        
$consulta mysql_query($sql->get());
        while(
$row mysql_fetch_assoc($consulta)){
            
$datos[] = $row;
        }
        return 
$datos;
    }
}
y bien como se usa todo esto..

index.php

Código PHP:
<?php
require_once 'Db.php';
require_once 
'MySql.php';
require_once 
'SQL.php';
        
//Aqui se le podria enviar cuaqluier tipo de base de datos solo creando un "Adaptador" que implemente la interface DbInterface
    
$db = new Db(new MySql('localhost','root','','password'));
        
$db->conectar();
        
$consulta = new SQL();
        
$consulta->addTabla('clientes');
            
$consulta->addCampo('razon');
            
$consulta->addCampo('nombre');
            
$consulta->addCampo('apellidos');
        
//$consulta->addWhere("nombre = 'Pepito'");
        
$consulta->addOrder("razon DESC");
        
$datos $db->ejecutar($consulta);
        foreach(
$datos as $val){
            echo 
$val['nombre']." ".$val['apellidos']."<br>";
        }
?>


Espero te de una idea más clara de las posibilidades de la OOP
__________________
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
  #16 (permalink)  
Antiguo 26/08/2010, 20:06
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

buenisimo la voy a estudiar para mejorar la q cree ya que mi intencion es ir aprendiendo y haciendo mientras aprendo voy a revisar bien el codigo a ver q mas tengo q investigar 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
  #17 (permalink)  
Antiguo 26/08/2010, 21:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: lo estoy haciendo bien??

Añado, también te recomiendo, cuando hayas aprendido a trabajar con OOP que leas sobre PDO.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #18 (permalink)  
Antiguo 26/08/2010, 21:48
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

Cita:
Iniciado por abimaelrc Ver Mensaje
Añado, también te recomiendo, cuando hayas aprendido a trabajar con OOP que leas sobre PDO.
e escuchado algo o mejor dicho leido un poco pero tendria q aprender un poco mas sobre ella gracias por el concejo
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #19 (permalink)  
Antiguo 20/09/2010, 00:05
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

bueno siguiendo algunos concejos de los compañeros que me dieron ak empece a meterme con PDO y a separar las obligaciones lo que hic funciona pero como siempre digo el echo que algo funcione no kiere decir que este bien sino que no tiene ningun error de comando entonces pongo ak lo que realice y se los comento a ver que me dicen
conexion.php
Código PHP:
Ver original
  1. <?php
  2. require_once("config.php");
  3. class Conexion extends PDO
  4. {
  5.     private static $_instance = null;
  6.     private $_query;
  7.     private $_row;
  8.     function __construct($dbs,$type)
  9.     {      
  10.         // Obtenemos el Config desde un array, clase config etc:
  11.         $config = Config::getInstance();
  12.         $host=$config->Host;
  13.         if(empty($dbs)){
  14.             if($config->DBName!=""){
  15.                 $db =$config->DBName;          
  16.             }
  17.             else
  18.                 echo "No ha configurado la base de datos"; 
  19.         }
  20.         else{
  21.             $db=$dbs;
  22.         }          
  23.         $user = $config->UserName;
  24.         $pwd = $config->Password;
  25.         $attrs = array();      
  26.         $dsn = $type.':host='.$host.';dbname='.$db;    
  27.         echo parent::__construct( $dsn, $user, $pwd, $attrs );
  28.         $this -> setAttribute ( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  29.     }
  30.     public static function getInstance($dbs="",$type="mysql")
  31.     {      
  32.         if( self::$_instance==null){
  33.             self::$_instance = new self($dbs,$type);
  34.         }
  35.         return self::$_instance;
  36.     }  
  37. }
es la clase que instancia la conexion con la base de datos viendo algunos ejemplos en la web y unos concejos en un tema de ak sencillamente cree una clase heredada de PDO los parametros que se deben pasar es el nombre de la base de datos sino se pasa alguno se queda la por defecto que se indico en config, el otro dato es el typo de base de datos yo la probe con las que conosco mysql que es la que mas he trabajado y un poco con postgresql ya que son los que conosco por el standar sql q he trabajado,
sql.php
Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. class SQL
  4. {
  5.     private $_conect;
  6.     private $_query;
  7.     private $_row;
  8.     private $_result;
  9.     public function __construct(){}
  10.     public function selectAll($table){
  11.         try{
  12.             $this->_conect=Conexion::getInstance();
  13.             $this->_query=$this->_conect->prepare("SELECT * FROM $table");
  14.             $this->_query->execute();
  15.             while($this->_row=$this->_query->fetch()){ 
  16.                 $this->_result[]=$this->_row;          
  17.             }
  18.             return $this->_result;
  19.         }
  20.         catch(PDOExeption $e){
  21.             echo $e->getMessaage();
  22.         }
  23.     }  
  24.     public function buscarQuery($query,$parametro=NULL)
  25.     {
  26.         try{           
  27.             $this->_conect=Conexion::getInstance();
  28.             $this->_query=$this->_conect->prepare($query);
  29.             $this->_query->execute($parametro);                                
  30.             while($this->_row=$this->_query->fetch()){ 
  31.                 $result[]=$this->_row;
  32.             }
  33.             return  $result;
  34.         }
  35.         catch(PDOExeption $e){
  36.             echo $e->getMessaage();
  37.         }
  38.     }      
  39.     public function insert($table,$campos,$valores)
  40.     {
  41.         if(!is_array($campos) || !is_array($valores)){
  42.             echo "Los datos deben de estar en formato de arreglo";
  43.         }
  44.         try{
  45.             $this->_conect=Conexion::getInstance();            
  46.             $campo=implode(",",$campos);           
  47.             foreach($valores as $id=>$valor){
  48.                 $valorIngresar[]="'".$valor."'";
  49.             }
  50.             $valors=implode(",",$valorIngresar);
  51.             $sql="INSERT INTO $table ($campo) VALUES ($valors)";
  52.             $this->_conect->exec($sql);
  53.         }
  54.         catch(PDOExeption $e){
  55.             echo $e->getMessaage();
  56.         }  
  57.     }      
  58. }
  59. ?>
aca la clase sql que es la que se encarga de la accion de las consultas hice unos metodos para ahorrarme el tener que escribir sql menos el de las consultas complejas ya que no me dio la cabeza jaja bueno espero sus comentarios como el de vas mas o menos pero no estas loco o algo parecido 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
  #20 (permalink)  
Antiguo 24/09/2010, 23:56
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: lo estoy haciendo bien??

Bueno te recomiendo que no utilices el Patrón Singleton en tu clase Config. Ya que si estas utilizando PDO que es una capa de abstracción de bases de datos que te permite conectarte a varias bases de datos, cuando utilizas Singleton en esta clase te restringe a que solo puedas tener una sola instancia, es decir no podrás tener configuraciones distintas de distintas bases de datos en un mismo script archivo php. Suponiendo que quieres utilizar Mysql y PostgreSQL a la vez.

Por otro lado como ya debes sabes el atributo dns de PDO el string de configuración cambia para cada gestor de bases de datos y en tu clase Conexion no te va a servir cuando quieras utilizar por ejemplo PostgreSQL o Oracle.

Ejemplos string de configuración del atributo dns distintos:

Código PHP:
Ver original
  1. // mysql
  2. $dbh = new PDO("mysql:host=$hostname;dbname=mysql", $username, $password);
  3.  
  4. // sqlite
  5. $dbh = new PDO("sqlite:/path/to/database.sdb");
  6.  
  7. //Firebird
  8.  $dbh = new PDO("firebird:dbname=localhost:C:\Programs\Firebird\DATABASE.FDB", "SYSDBA", "masterkey");
  9.  
  10. //Oracle
  11.  $dbh = new PDO("OCI:", "username", "password")
  12.  
  13. //ODBC
  14. $dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\accounts.mdb;Uid=Admin");


Puedes separar más las responsabilidades y u obligaciones utilizando el Patrón Factory Method que es una clase que tiene la responsabilidad de crear objetos de otras clases.

Porque utilizar este patrón en tu caso:

Flexibilidad en tiempo de ejecución. A veces es imposible elegir de antemano cuál objeto específico debe ser instanciado, ya que la elección de los objetos a utilizar puede depender de algo en el entorno de ejecución. De esta forma tu clase puede ser tan inteligente que sepa cuando tú utilizas MySQL u otro gestor de bases de datos.

Ejemplo (Parte de este código lo tome de @GavtorV y lo modifique):

config.ini

Código PHP:
Ver original
  1. ; Every interaction with a database begins with a connection.
  2. ; Set here the parameters of the database you are using.
  3. host     = 'localhost'
  4. dbname   = 'dbprueba'
  5. username = 'root'
  6. password = 'prueba'

ConfigReader.php

Para leer el archivo .ini

Código PHP:
Ver original
  1. <?php
  2. class ConfigReader
  3. {
  4.     private $_config;
  5.  
  6.     public function __construct($sFile)
  7.     {
  8.         if (!file_exists($sFile)) {
  9.             throw new Exception('Can\'t find file: '.$sFile);
  10.         }
  11.         $this->_config = parse_ini_file($sFile, true);
  12.     }
  13.  
  14.     public function getConfig()
  15.     {
  16.         return $this->_config;
  17.     }
  18. }
  19. ?>

DatabaseFactory_Interface.php

Código PHP:
Ver original
  1. <?php
  2. interface DatabaseFactory_Interface {
  3. public static function create($sIniFile);
  4. }
  5. ?>

DatabaseFactory.php

Código PHP:
Ver original
  1. <?php
  2. spl_autoload(DatabaseFactory_Interface);
  3. spl_autoload(Registry);
  4. spl_autoload(ConfigReader);
  5. spl_autoload(Database);
  6.  
  7. class DatabaseFactory implements DatabaseFactory_Interface
  8. {
  9.     public static function create($sIniFile)
  10.     {
  11.         if (Registry::exists($sIniFile)) {
  12.             return Registry::get($sIniFile);
  13.         }
  14.  
  15.         $config = new ConfigReader($sIniFile);        
  16.         $config_data = $config->getConfig();
  17.         $database_class = key($config_data);
  18.         spl_autoload($database_class);
  19.         $db = new $database_class($config);
  20.         Registry::add($sIniFile, $db);
  21.         return $db;
  22.     }
  23. }
  24. ?>

MySQL.php

Código PHP:
Ver original
  1. <?php
  2. final class MySQL extends PDO
  3. {
  4.     private $_username;
  5.     private $_password;
  6.     private $_host;
  7.     private $_db;
  8.  
  9.     public function __construct(ConfigReader $config)
  10.     {
  11.         $config_data = $config->getConfig();
  12.         $this->_username = $config_data['MySql']['username'];
  13.         $this->_password = $config_data['MySql']['password'];
  14.         $this->_host = $config_data['MySql']['host'];
  15.         $this->_db = $config_data['MySql']['dbname'];
  16.         $this->_dsn = 'mysql:host='.$this->_host.';dbname='.$this->_db;
  17.         parent::__construct($this->_dsn, $this->_username, $this->_password);
  18.     }
  19. }
  20. ?>

Como usar:

Código PHP:
Ver original
  1. DatabaseFactory::create('config.ini');

De esta forma puedes crear varias clases que hereden de PDO, por ejemplo puedes crear una clase PgSql otra Oracle que hereden de PDO y cada clase tiene su string de configuración del atributo dns distintos. Esta es una de las grandes ventajas del Patrón Factory Method que te permite centraliza en una clase constructora la creación de objetos de un subtipo de un tipo determinado, ocultando al cliente/usuario que puedes ser tu la casuística para elegir el subtipo que crear.

Ademas cumples con un principio de diseño orientado a objetos muy importante, que es el Principio Open/Close “desarrolla cerrado al cambio y abierto a la extensión”. Si el día de mañana necesitas dar soporte a otro gestor de bases de datos, simplemente creas la clase especifica la extiendes de PDO y le configuras el string de configuración del dns específico. Como vez abierto la extensión y cerrado al cambio.

Mayor performance y escalabilidad.

Saludos.

Última edición por atrianaster; 25/09/2010 a las 06:50 Razón: Saludos.
  #21 (permalink)  
Antiguo 25/09/2010, 06:53
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: lo estoy haciendo bien??

Cita:
Iniciado por neslip18 Ver Mensaje
Yo te recomendaria que tambien apliques simgleton en tu clase conexion
Hola @neslip18, el Singleton no está recomendado para clases de conexión a bases de datos, yo también erróneamente pensaba igual y luego de una larga discusión con el moderador de este foro llegue a la conclusión de que no es factible, utilizar Singleton.

Saludos.

Última edición por atrianaster; 25/09/2010 a las 07:07
  #22 (permalink)  
Antiguo 25/09/2010, 07:48
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: lo estoy haciendo bien??

Cita:
Iniciado por _ssx Ver Mensaje
Veo que muchos aquí tratan de empezar a hacer sus "Clases de conexión" no obstante que les parece si hacemos un ejemplo un poco más OOP y más robusto.
Más robusto, discúlpame pero te recomiendo leer más acerca de SQL estándar, ya que para cada gestor de base de datos las consultas SQL cambian. Por ejemplo en tu clase SQL la clausula 'ORDER BY' no lo soportan algunos gestores de bases de datos, a pesar de que es estandar, ejemplo ahora que recuerde algunas versiones de IBM. En caso de que sea solo para MySQL esta bien.

Aquí puedes ver una clara comparación:

http://troels.arvin.dk/db/rdbms


Este es el principal motivo en el que comente anteriormente la necesidad de utilizar Patrón Factory Method.

http://www.forosdelweb.com/3572245-post20.html

Saludos.

Última edición por atrianaster; 25/09/2010 a las 08:24 Razón: vinculo a wikipedia
  #23 (permalink)  
Antiguo 25/09/2010, 09:45
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 20 años, 11 meses
Puntos: 60
Respuesta: lo estoy haciendo bien??

Dije un ejemplo, NO tiene por que sen el código final de producción, el anterior solo era para fines de entendimiento de separación de responsabilidades
__________________
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
  #24 (permalink)  
Antiguo 25/09/2010, 10:20
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: lo estoy haciendo bien??

Cita:
Iniciado por _ssx Ver Mensaje
Dije un ejemplo, NO tiene por que sen el código final de producción, el anterior solo era para fines de entendimiento de separación de responsabilidades
Está bien, solo era una recomendación.

Cita:
Iniciado por _ssx Ver Mensaje
3.- Prefiere usar utf-8 en lugar de escapar cáracteres con htmlentities ya que tu DB quedara más limpia.
Se me olvidaba sobre htmlentities , no entendí la relación que hay entre UTF-8 y htmlentities. htmlentities se debe usar casi siempre para evitar ataques XSS Cross Site Scripting independientemente del tipo de codificación.

Yo utilizo utf-8 y htmlentities.

Saludos.

Última edición por atrianaster; 25/09/2010 a las 10:50
  #25 (permalink)  
Antiguo 25/09/2010, 14:27
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

muchas gracias por toda la informacion que aportaropn tengo bastante que estudiar jaja ahi teno bastante material lo empezare a trabajar y les cuento gracias a todos pos sus comentarios y ayuda en el tema 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
  #26 (permalink)  
Antiguo 29/09/2010, 22:30
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

buenas he estado un poco perdido lo que pasa es que me esta absorbiendo el trabajo solo me conecto en las noches y reviso si puedo ayudar un poco ayudo pero mas puede el sueño jajaj amigo atrianaster estube estudiando e implementando el codigo que me dejaste entendi mas o menos para que se utiliza el patron factory creo que hasta ahi voy bien pero en el ejemplo que me ponias me esta dando un error no estoy seguro si sea lo que voy a indicar cuando llamas al patron registry aca
Cita:
Registry::add($sIniFile, $db);
el parametro que le pasas es el archivo .ini y este seria el indice de la variable de registry esto no trae un error?? ojo solo estoy preguntando de manera informativa el error que hasta ahora tengo es por otra clase que quise meter antes de probar completamente esta pero a manera informativa esto no daria un error o que pasaria como tomaria ese indice si le estas pasando un archivo .ini 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
  #27 (permalink)  
Antiguo 30/09/2010, 09:35
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: lo estoy haciendo bien??

El parámetro que le paso es un “string” con el nombre del archivo .ini de configuración, que para simplificarlo tiene que estar en el mismo directorio, eso lo puedes cambiar después si quieres. Esté “string” sería un índice del atributo privado $_registry de la clase Registry. Este atributo lo que contiene es un arreglo. Cada vez que utilizas el método add lo que haces es añadirle un índice y valor nuevo a ese arreglo.


Código PHP:
static private $_registry = array(); 
No no veo ningún error. La idea es que por ejemplo si en ese mismo script php quieres conectarte a otra base de datos distinta ya sea MySQL o otra, creas otro archivo de configuración con los parámetros específicos de la base de datos y te conectas también. Siempre después de conectarte a una base de datos se guarda la instancia en el registro por si la quieres volver a usar en el mismo script.

Última edición por atrianaster; 30/09/2010 a las 09:42
  #28 (permalink)  
Antiguo 30/09/2010, 15:48
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

gracias por la respuesta yo entiendo lo del patron registry lo que no estaba seguro era como estaba pasando, el parametro pero efectivamente no da ningun error ya acomode lo que tenia errado de otras clases que queria colocar y ya hace la conexion con mysql, esa era mi duda si tenia que crear un archivo config para cada BD, yo mas o menos me lo imagine pero queria asegurar gracias amigo por la ayuda prestada ya mas o menos voy entendiendo estos patrones, como siempre digo la practica es la mayor manera de aprender saludos y cualquier cosa les pego un grito
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #29 (permalink)  
Antiguo 20/10/2010, 19:18
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: lo estoy haciendo bien??

bueno puse en practica la base de datos que construimos entre varios, pero me pasa lo siguiente
cada vez que hago una consulta se une al arreglo que me devolvio en el anterior un ejemplo
Código PHP:
Ver original
  1. include ("DbFactory.php");#aca inclui tambien el archivo db.php que es donde tengo mis funciones para traer datos y cosas asi
  2. $var=new db();
  3. $row=$var->ejecutarSentencia("select * from articulos");
  4. print_r($row);
  5. $ro=$var->selectAll('usuario');
  6. echo "<br/><br/><br/>";
  7. print_r($ro);
aca el archivo db para que me digan si es que tengo algo mal aca
Código PHP:
Ver original
  1. <?php
  2.  
  3. class db
  4.  
  5. {
  6.  
  7.     protected $_conect;
  8.  
  9.     protected $_query;
  10.  
  11.     protected $_row;
  12.  
  13.     protected $_result;
  14.  
  15.     public function __construct()
  16.  
  17.     {      
  18.         $this->_conect=DatabaseFactory::create('config.ini');
  19.  
  20.     }
  21.  
  22.     public function selectAll($table,$condicion=NULL){
  23.  
  24.         try{                       
  25.  
  26.            
  27.  
  28.             if(empty($condicion))
  29.  
  30.             {
  31.  
  32.                 $this->_query=$this->_conect->prepare("SELECT * FROM $table");
  33.  
  34.                 $this->_query->execute();
  35.  
  36.             }
  37.  
  38.             else{
  39.  
  40.                 $this->_query=$this->_conect->prepare("SELECT * FROM $table WHERE $condicion");
  41.  
  42.                 $this->_query->execute();
  43.  
  44.             }  
  45.  
  46.             while($this->_row=$this->_query->fetch()){ 
  47.  
  48.                 $this->_result[]=$this->_row;          
  49.  
  50.             }
  51.  
  52.             //$this->_conect="";           
  53.  
  54.             return $this->_result;
  55.  
  56.         }
  57.  
  58.         catch(PDOExeption $e){
  59.  
  60.             echo $e->getMessaage();
  61.  
  62.         }
  63.  
  64.     }  
  65.  
  66.     public function ejecutarSentencia($query,$parametro=NULL,$return=true)
  67.  
  68.     {
  69.  
  70.         try{           
  71.  
  72.             /*$site_path = realpath(dirname(__FILE__)).'\config.ini';
  73.  
  74.             $this->_conect=DatabaseFactory::create($site_path);*/
  75.  
  76.             //$this->_conect=DatabaseFactory::create('C:/xampp/htdocs/taquilla/ayuda/clase_conexion_bien_echa/config.ini');
  77.  
  78.             /*$site_path = realpath(dirname(__FILE__)).'\config.ini';
  79.  
  80.             $this->_conect=DatabaseFactory::create($site_path);*/          
  81.  
  82.             $this->_query=$this->_conect->prepare($query);
  83.  
  84.             $this->_query->execute($parametro);
  85.  
  86.             if($return==true){                                 
  87.  
  88.                 while($this->_row=$this->_query->fetch()){ 
  89.  
  90.                     $this->_result[]=$this->_row;
  91.  
  92.                 }
  93.  
  94.                 //$this->_conect="";
  95.  
  96.                 return $this->_result;
  97.  
  98.             }
  99.  
  100.             else{
  101.  
  102.                 //$this->_conect="";
  103.  
  104.                 return $this->_query;
  105.  
  106.             }              
  107.  
  108.         }
  109.  
  110.         catch(PDOExeption $e){
  111.  
  112.             echo $e->getMessaage();
  113.  
  114.         }
  115.  
  116.     }      
  117.  
  118.     public function insert($table,$campos,$valores)
  119.  
  120.     {
  121.  
  122.         if(!is_array($campos) || !is_array($valores)){
  123.  
  124.             echo "Los datos deben de estar en formato de arreglo";
  125.  
  126.         }
  127.  
  128.         try{           
  129.  
  130.             /*$site_path = realpath(dirname(__FILE__)).'\config.ini';
  131.  
  132.             $this->_conect=DatabaseFactory::create($site_path);*/
  133.  
  134.             $campo=implode(",",$campos);           
  135.  
  136.             foreach($valores as $id=>$valor){
  137.  
  138.                 $valorIngresar[]="'".$valor."'";
  139.  
  140.             }
  141.  
  142.             $valors=implode(",",$valorIngresar);
  143.  
  144.             $sql="INSERT INTO $table ($campo) VALUES ($valors)";
  145.  
  146.             echo $sql;
  147.  
  148.             $this->_conect->exec($sql);
  149.  
  150.             //$this->_conect="";
  151.  
  152.         }
  153.  
  154.         catch(PDOExeption $e){
  155.  
  156.             echo $e->getMessaage();
  157.  
  158.         }  
  159.  
  160.     }      
  161.  
  162.     public function deleteAll($table,$return=false)
  163.  
  164.     {
  165.  
  166.         try{
  167.  
  168.             /*$site_path = realpath(dirname(__FILE__)).'\config.ini';
  169.  
  170.             $this->_conect=DatabaseFactory::create($site_path);*/
  171.  
  172.             //$this->_conect=DatabaseFactory::create('config.ini');
  173.  
  174.             $this->_result=$this->_conect->exec("DELETE FROM $table");         
  175.  
  176.             if($return){
  177.  
  178.                 return $this->_result;
  179.  
  180.             }  
  181.  
  182.             //$this->_conect="";
  183.  
  184.         }
  185.  
  186.         catch(PDOExeption $e){
  187.  
  188.             echo $e->getMessaage();
  189.  
  190.         }
  191.  
  192.     }
  193.  
  194.     public function reiniciarTabla($table){
  195.  
  196.         try{
  197.  
  198.             /*$site_path = realpath(dirname(__FILE__)).'\config.ini';
  199.  
  200.             $this->_conect=DatabaseFactory::create($site_path);*/
  201.  
  202.             //$this->_conect=DatabaseFactory::create('config.ini');
  203.  
  204.             $this->_result=$this->_conect->exec("TRUNCATE TABLE $table");  
  205.  
  206.             //$this->_conect="";                   
  207.  
  208.         }
  209.  
  210.         catch(PDOExeption $e){
  211.  
  212.             echo $e->getMessaage();
  213.  
  214.         }
  215.  
  216.     }
  217.  
  218. }

el trae los datos bien pero si se fijan cuando hago la consulta de dos cosas diferentes en una misma pagina en la segunda tambien me incluye los datos de la primera xq??
Cita:
Array ( [0] => Array ( [id_articulo] => 1 [0] => 1 [titulo] => Aprendiendo a Maquetar con CSS [1] => Aprendiendo a Maquetar con CSS [contenido] => estamos comenzando [2] => estamos comenzando [usuario] => carlos [3] => carlos ) )


Array ( [0] => Array ( [id_articulo] => 1 [0] => 1 [titulo] => Aprendiendo a Maquetar con CSS [1] => Aprendiendo a Maquetar con CSS [contenido] => estamos comenzando [2] => estamos comenzando [usuario] => carlos [3] => carlos ) [1] => Array ( [usuario] => carlos [0] => carlos [pass] => 123456 [1] => 123456 [nivel] => administrador [2] => administrador [estatus] => habilitado [3] => habilitado ) )
probe cerrando la conexion con PDO pero cuando la intentanba volver a abrir me dice que no puedo redeclarar la clase DatabaseFactory ebtonces que puedo hacer?? no me da la mente ya
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #30 (permalink)  
Antiguo 24/10/2010, 14:35
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Información Respuesta: lo estoy haciendo bien??

Hola @carlos_belisario:

No tienes ningun error, lo que sucede es que el atributo _result[] es un arreglo.

Existen muchas formas de definir arreglos y esa es una de ellas.

Cuando invocas a los métodos ejecutarSentencia y selectAll le estas agregando valores a ese arreglo con

Código PHP:
Ver original
  1. $this->_result[]=$this->_row;

Saludos.

Etiquetas: Ninguno
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 21:38.