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. Cita: Iniciado por atrianaster Hola @carlos_belisario: No tienes ningun error, lo que sucede es que el atributo _result[] es un arreglo. Existen muchas formas de ...

  #31 (permalink)  
Antiguo 24/10/2010, 18:15
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 atrianaster Ver Mensaje
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.
esa era la pista que necesitaba voy a declarar el array de resultados en cada metodo para que sea vacie, ya me estaba volviendo loco pero bueno gracias por el dato 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
  #32 (permalink)  
Antiguo 24/10/2010, 18:16
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: lo estoy haciendo bien??

Bueno, no había visto este post, interesante
creo que lo que te ocurre es porque no estás
descargando el valor anterior de $this->_result
pues en lo que muestras finalmente el array
termina teniendo 2 posiciones (0,1)
intenta al inicio de la función limpiar el contenido

Código PHP:
$this->_result ''
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #33 (permalink)  
Antiguo 24/10/2010, 18:26
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 mortiprogramador Ver Mensaje
Bueno, no había visto este post, interesante
creo que lo que te ocurre es porque no estás
descargando el valor anterior de $this->_result
pues en lo que muestras finalmente el array
termina teniendo 2 posiciones (0,1)
intenta al inicio de la función limpiar el contenido

Código PHP:
$this->_result ''
saludos
jaja bueno creo que eso fue en el tiempo que estubiste medio perdido que lo comence y como estaba en el foro de POO y lo he medio revivido para no abrir post nuevos xq no esta tan viejo y pense fue en declarar el array en cada metodo ej
Código PHP:
Ver original
  1. #
  2. public function selectAll($table,$condicion=NULL){        
  3.         try{                      
  4.           $this->_result[]=array();
  5. #
  6.  
  7. #
  8.          
  9. #
  10.  
  11. #
  12.            if(empty($condicion))
  13. #
  14.  
  15. #
  16.            {
  17. #
  18.  
  19. #
  20.                $this->_query=$this->_conect->prepare("SELECT * FROM $table");
  21. #
  22.  
  23. #
  24.                $this->_query->execute();
  25. #
  26.  
  27. #
  28.            }
  29. #
  30.  
  31. #
  32.            else{
  33. #
  34.  
  35. #
  36.                $this->_query=$this->_conect->prepare("SELECT * FROM $table WHERE $condicion");
  37. #
  38.  
  39. #
  40.                $this->_query->execute();
  41. #
  42.  
  43. #
  44.            }  
  45. #
  46.  
  47. #
  48.            while($this->_row=$this->_query->fetch()){
  49. #
  50.  
  51. #
  52.                $this->_result[]=$this->_row;          
  53. #
  54.  
  55. #
  56.            }
  57. #
  58.  
  59. #
  60.            //$this->_conect="";          
  61. #
  62.  
  63. #
  64.            return $this->_result;
  65. #
  66.  
  67. #
  68.        }
  69. #
  70.  
  71. #
  72.        catch(PDOExeption $e){
  73. #
  74.  
  75. #
  76.            echo $e->getMessaage();
  77. #
  78.  
  79. #
  80.        }
  81. #
  82.  
  83. #
  84.    }
pero limpiandolo como dices tambien me serviria gracias por la acotacion 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
  #34 (permalink)  
Antiguo 25/10/2010, 18:12
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??

pues les cuento que sigue dando el mismo problema ahora si que me voy a volver loco fijense lo hice como lo plantie y sin embargo me da el mismo problema
Código PHP:
Ver original
  1. public function selectAll($table,$condicion=NULL){
  2.         $this->_result[]=array();
  3.         $this->_row=array();       
  4.         try{                                   
  5.             /*$site_path = realpath(dirname(__FILE__)).'\config.ini';
  6.             $this->_conect=DatabaseFactory::create($site_path);*/
  7.             if(empty($condicion))
  8.             {
  9.                 $this->_query=$this->_conect->prepare("SELECT * FROM $table");
  10.                 $this->_query->execute();
  11.             }
  12.             else{
  13.                 $this->_query=$this->_conect->prepare("SELECT * FROM $table WHERE $condicion");
  14.                 $this->_query->execute();
  15.             }                  
  16.             while($this->_row=$this->_query->fetch()){ 
  17.                 $this->_result[]=$this->_row;          
  18.             }
  19.             //$this->_conect="";
  20.             return $this->_result;
  21.         }
  22.         catch(PDOExeption $e){
  23.             echo $e->getMessaage();
  24.         }
  25.     }  
  26.     public function ejecutarSentencia($query,$parametro=NULL,$return=true)
  27.     {      
  28.         $this->_result[]=array();
  29.         $this->_row=array();
  30.         try{           
  31.             /*$site_path = realpath(dirname(__FILE__)).'\config.ini';
  32.             $this->_conect=DatabaseFactory::create($site_path);*/
  33.             //$this->_conect=DatabaseFactory::create('C:/xampp/htdocs/taquilla/ayuda/clase_conexion_bien_echa/config.ini');
  34.             /*$site_path = realpath(dirname(__FILE__)).'\config.ini';
  35.             $this->_conect=DatabaseFactory::create($site_path);*/
  36.             $this->_query=$this->_conect->prepare($query);
  37.             $this->_query->execute($parametro);
  38.             if($return==true){                                                         
  39.                 while($this->_row=$this->_query->fetch()){ 
  40.                     $this->_result[]=$this->_row;
  41.                 }
  42.                 //$this->_conect="";
  43.                 return $this->_result;
  44.             }
  45.             else{
  46.                 //$this->_conect="";
  47.                 return $this->_query;
  48.             }              
  49.         }
  50.         catch(PDOExeption $e){
  51.             echo $e->getMessaage();
  52.         }
  53.     }
tambien lo intente colocandolo igual a blanco, iguale tambien $this->_row tambien por si era lo que pasaba y nada, que podra ser?? no le habia parado mucho porque sencillamente para verificar los datos hago un print_r de lo que traiga en la consulta pero eso no es el echo, deberia de traerme solo los datos que pido de manera optima xq si cree esto fue para ahorrarme trabajo no para darme que podra ser una ayuda por favor xq ya yo no veo el dilema 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
  #35 (permalink)  
Antiguo 25/10/2010, 21:13
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: lo estoy haciendo bien??

bueno, intente jugar con tu código pero php me recordó lo fatal que puede ser eso.....

Fatal error: Class 'DatabaseFactory'

y dicen de mi que soy fatalista!!! pues que más querían!!!
más hijo de php no puedo ser!!!!

uhm, mientras, se me ocurre unas ideas traidas de
las gavetas locas (trayendo a la arena a un
joven bastante ocurrente llamado mr maker (los que tienen
hijos o sobrinos pequeños y desadaptados (o adictos a discovery kids)
sabrán sobre quien estoy hablando....))

llama a la clase, has la primera consulta,
y... SUAS, usa unset!!

esto fuera de la clase
pero también podrías intentar hacer una función
dentro de la clase que haga unset a $this->result
para que al inicio de las demás funciones
llames a esa nueva función y SUAS

y todo eso en 1 minuto!!!
jajajajaja
prueba y comenta
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #36 (permalink)  
Antiguo 26/10/2010, 04:15
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Información Respuesta: lo estoy haciendo bien??

Utiliza una variable de php $result en vez de $this->_result. Asigna ahí el resultado de tu consulta y después lo retornas.

Ejemplo:



Código PHP:
Ver original
  1. while($this->_row=$this->_query->fetch()){
  2.                 $result = $this->_row;
  3.             }
  4.  return $result;

Saludos.
  #37 (permalink)  
Antiguo 26/10/2010, 17:03
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??

pues me funciono perfecto gracias por la ayuda pero voy a investigar cual es la diferencia entre $this->result y $result, claro entiendo que una es un atributo y la otra una variable pero si se vacian no actuan igual?? veamos que encuentro un millon de gracias nuevamente amigo atrianaster por la ayuda

Cita:
Iniciado por mortiprogramador Ver Mensaje
bueno, intente jugar con tu código pero php me recordó lo fatal que puede ser eso.....

Fatal error: Class 'DatabaseFactory'

y dicen de mi que soy fatalista!!! pues que más querían!!!
más hijo de php no puedo ser!!!!

uhm, mientras, se me ocurre unas ideas traidas de
las gavetas locas (trayendo a la arena a un
joven bastante ocurrente llamado mr maker (los que tienen
hijos o sobrinos pequeños y desadaptados (o adictos a discovery kids)
sabrán sobre quien estoy hablando....))

llama a la clase, has la primera consulta,
y... SUAS, usa unset!!

esto fuera de la clase
pero también podrías intentar hacer una función
dentro de la clase que haga unset a $this->result
para que al inicio de las demás funciones
llames a esa nueva función y SUAS

y todo eso en 1 minuto!!!
jajajajaja
prueba y comenta
saludos
interesante y te dio ese erro?? copiaste todo el codigo que deje en la primera parte?? y mi duda al usar unset estaria vaciando no es igual que le haga esto $this->result=""? bueno la solucion del amigo funciono la diferencia entre $this->variable y $variable no la conosco pero me resulto ahora a leer xq asi si funciona saludos y gracias por la ayuda y el interes
__________________
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; 26/10/2010 a las 17:11
  #38 (permalink)  
Antiguo 26/10/2010, 18:39
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: lo estoy haciendo bien??

bueno, intente con esto ahora pero me da otro de esos fatales
Fatal error: Cannot redeclare class insertar in D:\programs\servers\apache\public_html\poker\DbFac tory.php on line 171

seguramente estoy haciendo algo bestial, así que
si tuvieses un tiempo para poner el código
actualizado y como se debe usar yo podría
distraerme un rato (necesito divertirme de vez en cuando)

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #39 (permalink)  
Antiguo 26/10/2010, 22:53
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Información Respuesta: lo estoy haciendo bien??

La diferencia es que el ámbito de la variable $result es local y actúa solo dentro del método. Y $this->result es accesible en todo el objeto, es decir en todos los métodos de la clase $this->result está definido.
  #40 (permalink)  
Antiguo 27/10/2010, 20:42
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 atrianaster Ver Mensaje
La diferencia es que el ámbito de la variable $result es local y actúa solo dentro del método. Y $this->result es accesible en todo el objeto, es decir en todos los métodos de la clase $this->result está definido.
umm interesante y entiendo eso pero igual no entiendo xq si la estaba limpiando e igualando a blanco seguian apareciendo los demas datos?? esa es mi duda con lo que me dices me aclara un poco pero seguire investigando 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
  #41 (permalink)  
Antiguo 05/11/2010, 21:08
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: lo estoy haciendo bien??

Hola
bueno, hace rato que tenía este pendiente, pero
por tiempo no había podido

ahora bien, tal vez recuerdes que te comentaba
sobre el unset, bueno, basado en esto se me ocurre esto

Código PHP:
Ver original
  1. public function _reiniciarResult()
  2.     {
  3.         try
  4.         {
  5.             unset($this->result);
  6.         }
  7.         catch (PDOExeption $e)
  8.         {
  9.             echo $e->getMessage();
  10.         }
  11.     }

y para usarla donde se necesite

Código PHP:
Ver original
  1. //reemplazar
  2. $result = array();
  3. //por
  4. $this->_reiniciarResult();

y ya para modificar la variable que reemplazamos anteriormente sería


Código PHP:
Ver original
  1. //reemplazar
  2. $result[]=$this->_row;
  3. //por
  4. $this->result[]=$this->_row;

y pues prueba y comenta
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #42 (permalink)  
Antiguo 06/11/2010, 20:50
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??

interesante voy a probar aunque con la variable como tal me ha estado iendo bien gracias por la ayuda y el estar pendiente 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
  #43 (permalink)  
Antiguo 11/11/2010, 17:38
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 dejo el codigo de la clase funcionando para que le sea de utilidad a cualquier otra persona si se fija en almigo atrianaster dejo los archivos para establecer la conexion aca:

Cita:
Iniciado por atrianaster Ver Mensaje
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.
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #44 (permalink)  
Antiguo 11/11/2010, 17:39
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??

aca les dejo los metodos que use para trabajar el sql

Código PHP:
Ver original
  1. <?php
  2.  
  3.    #######################################################
  4.  
  5.    #   Clace para conexion con db                        #
  6.  
  7.    #                                                     #
  8.  
  9.    #   Creado por Carlos Belisario               #
  10.  
  11.    #                                                     #
  12.  
  13.    #######################################################
  14.  
  15.  class db
  16.  
  17. {
  18.  
  19.     protected $_conect;
  20.  
  21.     protected $_query;
  22.  
  23.     protected $_row;
  24.  
  25.     protected $_result;
  26.  
  27.     public function __construct()
  28.  
  29.     {
  30.  
  31.         $site_path = realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR.'config.ini';
  32.  
  33.         $this->_conect=DatabaseFactory::create($site_path);
  34.  
  35.     }
  36.  
  37.     public function selectAll($table,$condicion=array()){
  38.  
  39.         $result=array();
  40.  
  41.         try{           
  42.  
  43.             if(empty($condicion))
  44.  
  45.             {
  46.  
  47.                 $this->_query=$this->_conect->prepare("SELECT * FROM $table");
  48.  
  49.                 $this->_query->execute();
  50.  
  51.             }
  52.  
  53.             else{
  54.  
  55.                 foreach($condicion as $key=>$value){
  56.  
  57.                     $valorCondicion[]="$key='".$value."'";
  58.  
  59.                 }          
  60.  
  61.                 $condiciones=implode(" AND ",$valorCondicion);
  62.  
  63.                 $sql="SELECT * FROM $table WHERE $condiciones";
  64.  
  65.                 $this->_query=$this->_conect->prepare($sql);
  66.  
  67.                 $this->_query->execute();
  68.  
  69.             }  
  70.  
  71.             while($this->_row=$this->_query->fetch()){ 
  72.  
  73.                 $result[]=$this->_row;         
  74.  
  75.             }          
  76.  
  77.             return $result;
  78.  
  79.         }
  80.  
  81.         catch(PDOExeption $e){
  82.  
  83.             echo $e->getMessaage();
  84.  
  85.         }
  86.  
  87.     }  
  88.  
  89.     public function ejecutarSentencia($query,$parametro=NULL,$return=false )
  90.  
  91.     {
  92.  
  93.         $result=array();
  94.  
  95.         try{       
  96.  
  97.             $this->_query=$this->_conect->prepare($query);
  98.  
  99.             $this->_query->execute($parametro);
  100.  
  101.             if($return==true){                                 
  102.  
  103.                 while($this->_row=$this->_query->fetch()){ 
  104.  
  105.                     $result[]=$this->_row;
  106.  
  107.                 }              
  108.  
  109.                 return $result;
  110.  
  111.             }          
  112.  
  113.         }
  114.  
  115.         catch(PDOExeption $e){
  116.  
  117.             echo $e->getMessaage();
  118.  
  119.         }
  120.  
  121.     }      
  122.  
  123.     public function ejecutarSentencia1($query,$parametro=NULL,$return=false )
  124.  
  125.     {
  126.  
  127.         $result=array();
  128.  
  129.         try{       
  130.  
  131.             $this->_query=$this->_conect->prepare($query);
  132.  
  133.             $this->_query->execute($parametro);
  134.  
  135.             if($return==true){                                 
  136.  
  137.                 while($this->_row=$this->_query->fetch()){ 
  138.  
  139.                     return $this->_row;
  140.  
  141.                 }              
  142.  
  143.                 return $result;
  144.  
  145.             }          
  146.  
  147.         }
  148.  
  149.         catch(PDOExeption $e){
  150.  
  151.             echo $e->getMessaage();
  152.  
  153.         }
  154.  
  155.     }      
  156.  
  157.     public function insert($table,$campos,$valores)
  158.  
  159.     {
  160.  
  161.         if(!is_array($campos) || !is_array($valores)){
  162.  
  163.             echo "Los datos deben de estar en formato de arreglo";
  164.  
  165.         }
  166.  
  167.         try{                       
  168.  
  169.             $campo=implode(",",$campos);           
  170.  
  171.             foreach($valores as $id=>$valor){
  172.  
  173.                 $valorIngresar[]="'".$valor."'";
  174.  
  175.             }
  176.  
  177.             $valors=implode(",",$valorIngresar);
  178.  
  179.             $sql="INSERT INTO $table ($campo) VALUES ($valors)";           
  180.  
  181.             $this->_conect->exec($sql);        
  182.  
  183.         }
  184.  
  185.         catch(PDOExeption $e){
  186.  
  187.             echo $e->getMessaage();
  188.  
  189.         }  
  190.  
  191.     }  
  192.  
  193.     public function update($table,$valores,$condicion)
  194.  
  195.     {
  196.  
  197.         if(!is_array($valores)){
  198.  
  199.             echo "Los datos deben de estar en formato de arreglo";
  200.  
  201.         }
  202.  
  203.         try{           
  204.  
  205.             foreach($valores as $id=>$valor){
  206.  
  207.                 $valorIngresar[]="$id='".$valor."'";
  208.  
  209.             }
  210.  
  211.             foreach($condicion as $key=>$value){
  212.  
  213.                 $de=explode(".",$value);
  214.  
  215.                 if(count($de)>1){
  216.  
  217.                     $valorCondicion[]="$key=".$value;
  218.  
  219.                 }
  220.  
  221.                 else{
  222.  
  223.                     $valorCondicion[]="$key='".$value."'";
  224.  
  225.                 }
  226.  
  227.             }          
  228.  
  229.             $valors=implode(",",$valorIngresar);                       
  230.  
  231.             $condiciones=implode(" AND ",$valorCondicion);
  232.  
  233.             $sql="UPDATE $table SET $valors WHERE $condiciones";
  234.  
  235.             $this->_conect->exec($sql);        
  236.  
  237.         }
  238.  
  239.         catch(PDOExeption $e){
  240.  
  241.             echo $e->getMessaage();
  242.  
  243.         }  
  244.  
  245.     }
  246.  
  247.     public function deleteAll($table,$return=false)
  248.  
  249.     {
  250.  
  251.         try{           
  252.  
  253.             $this->_result=$this->_conect->exec("DELETE FROM $table");         
  254.  
  255.             if($return){
  256.  
  257.                 return $this->_result;
  258.  
  259.             }              
  260.  
  261.         }
  262.  
  263.         catch(PDOExeption $e){
  264.  
  265.             echo $e->getMessaage();
  266.  
  267.         }
  268.  
  269.     }
  270.  
  271.     public function reiniciarTabla($table){
  272.  
  273.         try{           
  274.  
  275.             $this->_result=$this->_conect->exec("TRUNCATE TABLE $table");              
  276.  
  277.         }
  278.  
  279.         catch(PDOExeption $e){
  280.  
  281.             echo $e->getMessaage();
  282.  
  283.         }
  284.  
  285.     }
  286.  
  287. }

si se fijan en la archivo dbfactory se incluye el patron registry utilice el creado en este articulo espero le sirva a alguien 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
  #45 (permalink)  
Antiguo 13/11/2010, 13:14
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: lo estoy haciendo bien??

hola carlos_belisario, por curiosidad no más, probaste lo que te deje?
y si la respuesta es true, te funcionó?
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #46 (permalink)  
Antiguo 13/11/2010, 17:23
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??

si morti lo probe y funciono de maravilla, he estado algo full y por eso no he podido pasar mucho tiempo por el foro gracias por la respuesta y la preocupación por la duda
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

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 08:59.