Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/11/2011, 18:18
dannyalfonzo
 
Fecha de Ingreso: febrero-2011
Mensajes: 18
Antigüedad: 13 años, 10 meses
Puntos: 9
Pregunta armar objetos dinamicamente

Hola y saludos a todos, los cuento, estoy trabajanado con una clase de php para mysql fantastica, no tiene nombre como tal "Database Abstraction class 1606" la encontre en classphp.org

funcioan asi:
require_once('../clases/crdb.php');

//aki me conecto normalmente a mysql

$db=new crdb($conexion_db);
$db->debug=false; //si se coloca en true, muestra los querys hechos por la clase crdb

$query = $db->users(); //users es el nombre de la tabla

$total_registros = count($query);

//luego bueno hay muchos metodos para obtener los resultados, aki un ejemplo

$query = $db->users->limit(0,20)->desc_order_by()->fields('alias','nombre');

$i=0;
foreach($query as $v){
$codigo[$i] = $v->cod;
$nombre[$i] = $v->nombre;
$apellido[$i] = $v->apellido;
$alias[$i] = $v->alias;
$estatus[$i] = $v->estatus;
$nivel[$i] = $v->nivel;
$boleta[$i] = $v->boletines;
$i++;
}


asi asi asi... muy bueno porque nunca lanzo nungun sql molestos (SELECT * FROM)

en si el problema biene a la hora de hacer filtros, la clase tine un metodo para condiciones "WHERE"

NOTA: soy nuevo trabajando con php y con objetos

$query = $db->users->nombre('danny'); //where nombre = 'danny'
$query = $db->users->nombre('!=','danny'); //where nombre != 'danny'
$query = $db->users->nombre('like'.'%danny'); //where nombre like '%danny'

lo que yo quisiera es hacer algo como almar los objetos para fabricar mi query dinamicamente;

algo como esto:

query = $db->users;

if(isset($_POST['filtro_nombre'])){

query .= ->nombre('like'.'%danny')

}

if(isset($_POST['filtro_apellido])){

query .= ->apellido('like'.'%alfonzo')

}


y que el resultado sea:

query = $db->users->nombre('like'.'%danny')->apellido('like'.'%alfonzo');

pero los objetos no los puedo manipular como si fueran cadenas

alguno de ustedes tiene idea de como hacer aca?



GRACIAS

Última edición por GatorV; 30/11/2011 a las 09:40