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

insertar datos a una BD con una clase

Estas en el tema de insertar datos a una BD con una clase en el foro de Frameworks y PHP orientado a objetos en Foros del Web. una consulta puedo usar un solo metodo para insertar datos en distintas tablas, quisiera usar solo uno solo y reutilizarlo se puede y como seria...
  #1 (permalink)  
Antiguo 25/10/2009, 17:13
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 461
Antigüedad: 22 años, 3 meses
Puntos: 1
insertar datos a una BD con una clase

una consulta puedo usar un solo metodo para insertar datos en distintas tablas, quisiera usar solo uno solo y reutilizarlo se puede y como seria
__________________
Marcelo Acampora
mi pagina web personal
www.destinitytravel.com
  #2 (permalink)  
Antiguo 25/10/2009, 18:40
Avatar de Abrahamsas  
Fecha de Ingreso: abril-2009
Ubicación: Guatemala
Mensajes: 21
Antigüedad: 15 años
Puntos: 2
Respuesta: insertar datos a una BD con una clase

Buenas marcinf2, mira esta clase que hace poco hice (basada en la version de yampoo (en el faq se encuentra su version))

Código PHP:
<?php
class interSql{
      
//////// Datos para Conexion con el Servidor ////////
      
var $db_server;
      var 
$db_user;
      var 
$db_pass;
      var 
$db_name;
      var 
$db_conexion;
      
//////// Consultar, Mostrar y Cerrar ////////
      
var $db_consult;
      var 
$dt_show;
      var 
$cn_close;

      
////////////////////////////////////////////////

      
function interSql($db_server,$db_user,$db_pass,$db_name){
               
$this->db_server $db_server;
               
$this->db_user $db_user;
               
$this->db_pass $db_pass;
               
$this->db_name $db_name;
               @
$this->db_conexion mysql_connect($this->db_server,$this->db_user,$this->db_pass);
               @
$db_seleccion mysql_select_db($this->db_name,$this->db_conexion);
               echo (
$this->db_conexion && $db_seleccion) ? "" "Conexion Fallida";
               }

      function 
consultarSql($query){
               
$this->db_consulta mysql_query($query,$this->db_conexion);
              }
      function 
mostrarSql($opcion,$tabla){
               switch(
$opcion){
               case 
1:{
                    while(
$this->dt_show mysql_fetch_array($this->db_consulta)){
                          echo 
$this->dt_show[$tabla]."<br>";}
                      }break;
               case 
2:{
                    
$this->dt_show mysql_fetch_array($this->db_consulta);
                    echo 
$this->dt_show[$tabla];
                      }break;
               default: echo 
$opcion." No es una opcion valida!";break;
                        }
               }
      function 
cerrarSql(){
               
mysql_close($this->db_conexion);
               }
}

// Ejemplo //
$db_conexion = new interSql("localhost","root","pass","web");// Datos para la conexion
$db_conexion->consultarSql("SELECT * FROM noticiasPortal"); // Consulta
$db_conexion->mostrarSql(1,"fecha"); // Mostrar Datos
$db_conexion->cerrarSql(); // Cerrar Conexion
?>
  #3 (permalink)  
Antiguo 25/10/2009, 18:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: insertar datos a una BD con una clase

Cita:
Iniciado por marcinf2 Ver Mensaje
una consulta puedo usar un solo metodo para insertar datos en distintas tablas, quisiera usar solo uno solo y reutilizarlo se puede y como seria
de que se puede, se puede!!

el como sería... pues ¿que llevas hecho??

aunque con el ejemplo que te comentan, es sencillo...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 26/10/2009, 16:31
 
Fecha de Ingreso: enero-2002
Ubicación: Lima
Mensajes: 461
Antigüedad: 22 años, 3 meses
Puntos: 1
Respuesta: insertar datos a una BD con una clase

creo que comprendi a ver por que recien empiezo a comprender las clases.

Abrahamsas : entonces deberia usar esto

function mostrarSql($opcion,$tabla){
switch($opcion){
case 1:{
while($this->dt_show = mysql_fetch_array($this->db_consulta)){
echo $this->dt_show[$tabla]."<br>";}
}break;
case 2:{
$this->dt_show = mysql_fetch_array($this->db_consulta);
echo $this->dt_show[$tabla];
}break;
default: echo $opcion." No es una opcion valida!";break;
}
}


obviamente en vez del while usar un insert y usar tantas $opcion como tablas tenga?

voy bien ?
__________________
Marcelo Acampora
mi pagina web personal
www.destinitytravel.com
  #5 (permalink)  
Antiguo 27/10/2009, 09:53
Avatar de Abrahamsas  
Fecha de Ingreso: abril-2009
Ubicación: Guatemala
Mensajes: 21
Antigüedad: 15 años
Puntos: 2
Respuesta: insertar datos a una BD con una clase

(Me diste una idea para mejorar la clase xD)
Pero regresando al tema, aca te dejo la misma clase pero con algo extra, que es la funcion de insertarSql(), que como lo dice su nombre sirve para insertar datos a la sql

Código PHP:
<?php
class interSql{
      
//////// Datos para Conexion con el Servidor ////////
      
var $db_server;
      var 
$db_user;
      var 
$db_pass;
      var 
$db_name;
      var 
$db_conexion;
      
//////// Consultar, Mostrar y Cerrar ////////
      
var $db_consult;
      var 
$dt_show;
      var 
$cn_close;
      var 
$insertar_datos;

      
////////////////////////////////////////////////

      
function interSql($db_server,$db_user,$db_pass,$db_name){
               
$this->db_server $db_server;
               
$this->db_user $db_user;
               
$this->db_pass $db_pass;
               
$this->db_name $db_name;
               @
$this->db_conexion mysql_connect($this->db_server,$this->db_user,$this->db_pass);
               @
$db_seleccion mysql_select_db($this->db_name,$this->db_conexion);
               echo (
$this->db_conexion && $db_seleccion) ? "" "Conexion Fallida";
               }

      function 
consultarSql($query){
               
$this->db_consulta mysql_query($query,$this->db_conexion);
              }
      function 
mostrarSql($opcion,$tabla){
               switch(
$opcion){
               case 
1:{
                    while(
$this->dt_show mysql_fetch_array($this->db_consulta)){
                          echo 
$this->dt_show[$tabla]."<br>";}
                      }break;
               case 
2:{
                    
$this->dt_show mysql_fetch_array($this->db_consulta);
                    echo 
$this->dt_show[$tabla];
                      }break;
               default: echo 
$opcion." No es una opcion valida!";break;
                        }
               }
      
///////////////////////////////////////////////
      
function insertarSql($datos){
               
$insertar_datos mysql_query($datos);
      
               }
      
///////////////////////////////////////////////
      
function cerrarSql(){
               
mysql_close($this->db_conexion);
               }
}


?>
y aca el ejemplo de su uso:
Código PHP:

// Ejemplo //
$db_conexion = new interSql("localhost","root","holam1","web");// Datos para la conexion
$db_conexion->insertarSql("INSERT INTO noticiasportal(tituloArticulo) VALUES('prueba')");
$db_conexion->cerrarSql(); // Cerrar Conexion 
cualquier onda avisas, mientras safo al trabajo xD
Chau!
  #6 (permalink)  
Antiguo 27/10/2009, 10:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: insertar datos a una BD con una clase

pues yo no veo que caso tiene ponerle al método insertarSql() si eso no lo hace...

osea, me explico: simplemente ejecuta un query, si haces un UPDATE usando el mismo método ¿que caso tiene poner un nombre que no hace lo que dice, si no algo mas general??

como una idea, analiza este ejemplo.. así si vale la pena nombrar e implementar el método
Código PHP:
$db_conexion->insertarSql('tabla', array('columna' => 'valor')); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 27/10/2009, 20:25
Avatar de Abrahamsas  
Fecha de Ingreso: abril-2009
Ubicación: Guatemala
Mensajes: 21
Antigüedad: 15 años
Puntos: 2
Respuesta: insertar datos a una BD con una clase

Si tenes razon, no me fije
Pero ya esta la idea xD
  #8 (permalink)  
Antiguo 28/10/2009, 03:00
 
Fecha de Ingreso: agosto-2008
Ubicación: Puebla, Mexico.
Mensajes: 84
Antigüedad: 15 años, 8 meses
Puntos: 0
Mensaje Respuesta: insertar datos a una BD con una clase

Pues ya que andamos en los mismos temas, este es el metodo que puse en el driver de mysql que hice xD

Código PHP:
<?php
define
(SERVER,     'server');
define(USER,         'usuario');
define(PASSWORD,    'password');
define(DATABASE,    'baseDeDatos');

class 
Database
{    
    private 
$_con;
    private 
$_query;
    private 
$_values;
    private 
$_result;
    
    public function  
__construct() {
        
$this->_con    $this->connect();
        
$this->_query    ' ';
        
$this->_values    ' ';
    }
    
    public function 
connect() {
        
$this->_con mysql_connect(SERVERUSERPASSWORD);
        
mysql_select_db(DATABASE$this->_con);
        return 
$this->_con;
    }
    
    public function 
insert($table$values) {
        
$this->_query "insert into {$table} ("
                        
.implode(', 'array_keys($values))
                        .
') values(';
        foreach (
$values as $key => $value) {
            
$value $this->sanitize($value);
            if(
is_numeric($value)) {
                
$this->_query .= ', ' $value;
            } else {
                
$this->_query .= ", '"$value "'";
            }
        }
        
$this->_query str_replace('(,''('$this->_query);
        
$this->_query .=  ')';
        
$this->_execute();    
    }
    
    private function 
_execute() {
        return @
mysql_query($this->_query$this->_con);
    }
}
En la clase de uso mediante colaboracion de clases lo puedes implementar asi
Código PHP:
<?php
class Sample
{
    private 
$_db;
    
    public function 
__construct(){
        
$this->_db = new Database();
    }
    
    public function 
addUser($nickname$username$password) {
        
$data = array('user_nick' => $nickname
                
'user_name' => $username
                
'user_pass' => $password);        
        
$this->_db->insert('users'$data);
    }
}
O si te gusta implementar herencia entonces quedaria asi
Código PHP:
class Sample extends Database
{    
    public function 
__construct(){
        
parent::__construct();
    }
    
    public function 
addUser($nickname$username$password) {
        
$data = array('user_nick' => $nickname
                
'user_name' => $username
                
'user_pass' => $password);        
        
$this->insert('users'$data);
    }

Insert toma 2 parametros, el nombre de la tabla y un array asociativo para formar la query y la puedes usar como te guste, me falto copypastear el metodo "sanitize" que uso para quitar strings no permitidas en los inserts y todos los demas metodos usados para los CRUD pero la idea creo que la tenemos xD

Última edición por a77icu5; 28/10/2009 a las 03:10
  #9 (permalink)  
Antiguo 28/10/2009, 09:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: insertar datos a una BD con una clase

una observación, no es recomendable ocultar los posibles errores de mysql_query() con @

en ese caso, para siempre depurar todo puedes usar excepciones, o bien el clásico:
Código PHP:
mysql_query(/* ... */) or die(mysql_error()); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 29/10/2009, 06:43
 
Fecha de Ingreso: agosto-2008
Ubicación: Puebla, Mexico.
Mensajes: 84
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: insertar datos a una BD con una clase

Muy cierto sr pateketrueke, anotese un kilo mas de karma a la cuenta....
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 23:25.