Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/08/2015, 10:17
Gonzalezjoan
 
Fecha de Ingreso: febrero-2015
Mensajes: 6
Antigüedad: 9 años, 3 meses
Puntos: 0
Información Corregir/mejorar mi código

Hola a todos, antes de nada quiero decirles que soy nuevo en este foro y agradezco de antemano, vuestra atención.

Soy nuevo programando en PHP y aun mas programando con POO, por eso quiero mostrarles un sencillo código que he realizado para que me aconsejen en que punto se puede mejorar o como lo haríais vosotros. Realmente el código funciona, pero no quiere decir que lo pueda estar haciendo bien y por eso pido vuestra colaboracion:

1ª página:
conexion.php

Código PHP:
class Conectar{
private 
$host$user$pass$database$charset;

    public function 
__construct() {

    require_once(
'db.php');  // Contiene las constantes de la conf. de la base de datos

    
$this->host        SERVIDORLOCAL;
        
$this->user        USUARIO;
        
$this->pass        CONTRASEÑA;
        
$this->database BASEDATOS;
        
$this->charset    CHARSET;

    }

    public function 
conexion(){
        try{
            if(!
$mysqli = new mysqli($this->host$this->user$this->pass$this->database)) throw new Exception("No se ha podido conectar con la base de datos.");
            
// Codificacion de caracteres utf-8
            
$mysqli->set_charset("'" $this->charset "'");

        }catch(
Exception $e){
            echo 
"Mensaje de error: " $e->getMessage();
            exit;
        }
            return 
$mysqli;
    }


2ª página:
insertClass.php
Código PHP:
require_once 'conexion.php';

    class 
InsertDataDb {
        private  
$conectar;
        private  
$con;
        private  
$params = array();
        private  
$type;
        private  
$tableName;
        private  
$columnName;
        private  
$values;

        public function 
__construct() {
            
$this->conectar = new Conectar();
            
$this->con $this->conectar->conexion();
        }

        private function 
refValues($arr){
            if (
strnatcmp(phpversion(),'5.3') >= 0//Reference is required for PHP 5.3+
            
{
                
$refs = array();
                foreach(
$arr as $key => $value)
                    
$refs[$key] = &$arr[$key];
                return 
$refs;
            }
        return 
$arr;
        }

            
//Setters

            /* Bind parameters. Types: s = string, i = integer, d = double,  b = blob */
        
public function setType($type){
            
$this->type = (string) $type;
        }

        public function 
setTableName($tableName){
            
$this->tableName = (string) $tableName;
        }

        public function 
setParams($bind_params){
//Obtiene los nombre de la columna de la tabla de la bd
            
if(!isset($this->columnName)){
                
$this->columnName implode(" , "array_keys($bind_params));
            }
//Obtiene el número de datos que el cliente va a ingresar en la bd para convertirlo en una sentencia preparada ejem: (?,?,?)
            
if (!isset($this->values)) {
                
$c count($bind_params);
                
$v ='';
                for(
$i 0$i $c$i++){
                    
$v .= '?,';
                }
                
$this->values rtrim($v,',');
            }
//Crea la sql
            
if(!isset($this->sql)){
                
$this->sql "INSERT INTO " $this->tableName " (" $this->columnName ") VALUES (" $this->values ")";
            }
            
$params $bind_params;
            if (isset(
$params) && is_array($params)) {
                
/* Unimos los parametros */
                
array_unshift($params$this->type);
                
$bp array_values($params);
                
$this->params $bp;
            }
        }


            
//Insertar datos
        
public function insertData(){
            if(
$stmt $this->con->prepare($this->sql)){
                
call_user_func_array(array($stmt'bind_param'), $this->refValues($this->params));
            }else{
                throw new 
Exception("No se ha podido introducir los datos en la base de datos " $this->con->error);
            }

            if(!
$stmt->execute()) throw new Exception("Se ha producido un fallo en la ejecución de almacenamiento de datos en la base de datos." $this->con->error);
    
$this->close();    
        }

            
//Inserta el ultimo id registrado
        
public function insertId(){
            return 
$this->con->insert_id;
        }

        public function 
close(){
            return 
$this->con->close();
        }
    } 
/* EJECUTAR */
Código PHP:
try{
$data = array(    
'cliente'     => 'Manolito',
'email'       => '[email protected]',
'password' => '1234');

        
$insert = new InsertDataDb();
        
$insert->setTableName('usuario'); // Nombre de la tabla de la bd
        
$insert->setType('sss');                //   Types: s = string, i = integer ...
        
$insert->setParams($data);        
        
$insert->insertData();

    }catch(
Exception $e){
        echo 
"Mensaje de error: " $e->getMessage();
        exit();
    } 
Mi idea es mejorar/corregir mi código y aprender de vosotros. En Internet hay mil maneras de hacerlo pero cada uno lo hace de manera diferente!!!