Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/01/2005, 14:30
Avatar de Reynier
Reynier
 
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 22 años, 1 mes
Puntos: 1
Parte 2

Código PHP:
 class SQLQuery{
  var 
$query;     // (string)  Última consulta creada
  
var $table;     // (string)  Tabla usada
  
var $values;    // (array)   Cada elemento es un nuevo arreglo con llaves que son los nombres de los campos. Cada nuevo arreglo contiene los elementos: (string) "value" y (bool) "is_sql_function"
  
var $where;     // (string)  clausula "WHERE"
  
var $limit;     // (string)  clausula "LIMIT"
  
var $selection// (string)  Selección de la clausula SELECT: "SELECT (selection) FROM table;"

  
function SQLQuery(){
   
$this->query "";
   
$this->table        "";
   
$this->values       = array();
   
$this->where        "";
   
$this->limit        "";
   
$this->selection    "*";
  }

  function 
createSelect($use_limit_clause true){
   if(
$this->selection==""  ||  $this->table==""){
    if(
$use_limit_clause){
     if(
$this->selection==""){
      
$this->error('No se ha podido ejecutar la consulta "SELECT". El parámetro <strong>"selección"</strong> está vacío.');
     }
     if(
$this->table==""){
      
$this->error('No se ha podido ejecutar la consulta "SELECT". El parámetro <strong>"tabla"</strong> está vacío.');
     }
    }
    return 
false;
   }

   
$this->query  "SELECT " $this->selection " FROM " $this->table $this->returnWhere();
   
$this->query .= ($use_limit_clause)  ?  $this->returnLimit()  :  "";
   return 
$this->query;
  }

  function 
createInsert(){
   if(
$this->table==""  ||  count($this->values)==0){
    if(
$this->table=="") {
     
$this->error('No se ha podido ejecutar la consulta "INSERT". El parámetro <strong>"tabla"</strong> está vacío.');
    }
    if (
count($this->values) == 0) {
     
$this->error('No se ha podido ejecutar la consulta "INSERT". El parámetro <strong>"valores (VALUES)"</strong> está vacío.');
    }
    return 
false;
   }
   
$values $fields = array();
   foreach(
$this->values as $fieldName => $fieldSettings){
    
$fields[] = $fieldName;
    if (
$fieldSettings['value']===NULL){
     
$values[] = "NULL";
    }else if(
$fieldSettings['is_sql_function']){
     
$values[] = $fieldSettings['value'];
    }else{
     
$values[] = "'" $fieldSettings['value'] . "'";
    }
   }
   
$values " (" .   implode(', '$fields)   . ") VALUES (" .   implode(', '$values)   . ")";
   
$this->query "INSERT INTO " $this->table $values;
   return 
$this->query;
  }

  function 
createUpdate(){
   if (
$this->table == ""  ||  count($this->values) == 0  ||  $this->where == ""){
    if (
$this->table == ""){
     
$this->error('No se ha podido ejecutar la consulta "UPDATE". El parámetro <strong>"tabla"</strong> está vacío.');
    }
    if (
count($this->values) == 0){
     
$this->error('No se ha podido ejecutar la consulta "UPDATE". El parámetro <strong>"valores (VALUES)"</strong> está vacío.');
    }
    if (
$this->where == "") {
     
$this->error('Safety procedure: La consulta "UPDATE" no ha sido ejecutada porque la clausula <strong>"WHERE"</strong> está vacía.');
    }
    return 
false;
   }
   
$values $fields = array();
   foreach(
$this->values as $fieldName => $fieldSettings){
    if(
$fieldSettings['value'] === NULL){
     
$values[] = $fieldName " = NULL";
    }else if(
$fieldSettings['is_sql_function']){
     
$values[] = $fieldName " = " $fieldSettings['value'];
    }else{
     
$values[] = $fieldName " = '" $fieldSettings['value'] . "'";
    }
   }
   
$values " SET " .   implode(', '$values);
   
$this->query "UPDATE " $this->table $values $this->returnWhere() . $this->returnLimit();
   return 
$this->query;
  }

  function 
createDelete(){
   if(
$this->table == ""  ||  $this->where == ""){
    if (
$this->table == ""){
     
$this->error('No se ha podido ejecutar la consulta "DELETE". El parámetro <strong>"tabla"</strong> está vacío.');
    }
    if (
$this->where == ""){
     
$this->error('Safety procedure: "DELETE" query was not created because <strong>"where"</strong> clause was empty.');
    }
    return 
false;
   }
   
$this->query "DELETE FROM " $this->table $this->returnWhere() . $this->returnLimit();
   return 
$this->query;
  }

  function 
createTruncate(){
   if (
$this->table == ""){
    
$this->error('No se ha podido ejecutar la consulta "TRUNCATE". El parámetro <strong>"tabla"</strong> está vacío.');
    return 
false;
   }
   
$this->query "TRUNCATE TABLE " $this->table;
   return 
$this->query;
  }

  function 
returnWhere(){
   
$where = ($this->where != "")  ?  (" WHERE (" $this->where ")")  :  "";
   return 
$where;
  }

  function 
returnLimit(){
   
$limit = ($this->limit != "")  ?  (" LIMIT " $this->limit)  :  "";
   return 
$limit;
  }

  function 
error($message ""){
   echo 
'<br /><span style="padding: 1px 7px 1px 7px; background-color: #ffd7d7; font-family: verdana; color: #000000; font-size: 13px;"><span style="color: #ff0000; font-weight: bold;">Error!</span> ' $message '</span><br />';
  }
 } 
__________________
Ing. Reynier Pérez Mira