Este es una lista de las generalidades del proyecto
la estructura esta formada por :
ejemplo:
CREATE TABLE persona ( id serial NOT NULL PRYMARY KEY, documento character varying(30), NOT NULL, nombre character varying(40), NOT NULL, apellido character varying(40), NOT NULL ); CREATE TABLE finca ( id serial NOT NULL, nombre character varying(30), persona_id bigint, ciudad character varying(30), CONSTRAINT finca_pkey PRIMARY KEY (id), CONSTRAINT finca_id_persona_fkey FOREIGN KEY (persona_id) REFERENCES persona (id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE );
retornar un listado de datos de una tabla para contruir una grilla a partir de un objeto active record
$lista=$obj->Find(' una condicion'); //de un objeto active record sacamos un listado
if($lista!==FALSE){
$noms=$obj->getAttributeNames();
$nodes=array();
foreach($lista as $ob){
//extraer los datos del registro
$r = array();//definimos un array para los atributos para asignar valores sin usar contador
foreach( $noms as $nom)
$r[$nom]=$h->{$nom};//las llaves son para q tome el valor de la variable y lo busque en los atributos d la clase
$nodes[]=$r;//se ubica al final de la lista
}
$suc=true;
$total=count($lista);
}else{
if(obj->errorMsg()!=''){
$suc=false;
$msg='mensaje de error elegante ';
if($_SESSION[debug]=='s') nl2br($obj->errorMsg());//si en la sesion deben mostrarse los errores
}else{
$suc=true;
$total=0;
}
}
echo json_encode(array("success"=>$suc,"message"=>$msg,"total"=>$total,"data"=>$nodes));
retornar un listado de datos de una tabla para contruir una grilla a partir de una consulta normal
$rs=$con->Execute(' una SQL');
if($rs!==FALSE){
$noms=array_keys($rs->fields);
$nodes=array();
do{
//extraer los datos del registro
$r = array();//definimos un array para los atributos para asignar valores sin usar contador
foreach( $noms as $nom=>$val)
if(!is_numeric($nom))$r[$nom]=$val;//se valida q solo incluya los nombres de las columnas no los numeros
$nodes[]=$r;//se ubica al final de la lista
}while($rs->MoveNext());
$suc=true;
$total=count($lista);
}else{
$suc=false;
$msg='mensaje de error elegante ';
if($_SESSION[debug]=='s') nl2br($obj->errorMsg());//si en la sesion deben mostrarse los errores
}
echo json_encode(array("success"=>$suc,"message"=>$msg,"total"=>$total,"data"=>$nodes));
retornar un array anidado para construir un arbol : esto se usa si solo se hace una consulta para cargar todo el arbol
$sql= new core_sql();
$sql->Load('id=xxx');
//SQL q cargue los nodos del arbol a dibujar
//se debe tenere e cuenta q la sql debe ordenar los registros primero los q son nodos padres, luego rodenar por id_del padre
//luego el resto de los criterios esto a fin de garantizar q se ubiquen primero los padre y no queden nodos sueltos
$rs=$con->Execute($sql->sql);
if($rs!==FALSE){
$nodos=array();//AQUI SE FORMA LA ESTRUCTURA
$pads=array();//AQUI SE ALMACENA DONDE QUEDA GUARDADO CADA NODO
do{
$id=$rs->fields['id'];
$id_pad=$rs->fields['padre'];
if($rs->fields['is_pad']=='s'){//'aqui se diferencia los q son padres de los q son hojas '
$item=array(
'id' => $rs->fields[id],
'text' => $rs->fields[etiqueta],
'expand'=>true,
.
.
.
);
}else{
$item=array(
'id' => $rs->fields[id],
'com' => $rs->fields[etiqueta],
'leaf'=>true,
.
.
.
);
}
if($id_pad==0){//si el padre es la raiz
$c=count($nodos);
$nodos[$c]=$item; //SE UBICA EL ITEM
$pads[$id]=&$nodos[$c];
//SE ALMACENA DONDE QUEDO GUARDADO
//EL & SIMBOLIZA Q NO SE GUARDA LA VARIABLE SINO SU UBICACION EN MEMORIA
}else{
$c=count($pads[$id_pad]['children']); //CUANTOS HIJOS TIENE EL NODO PADRE
$pads[$id_pad]['children'][$c]=$item; //SE UBICA EL ITEM EN LA ULTIMA POSISION
$pads[$id]=&$pads[$id_pad]['children'][$c];
//SE ALMACENA DONDE QUEDO GUARDADO
//EL & SIMBOLIZA Q NO SE GUARDA LA VARIABLE SINO SU UBICACION EN MEMORIA
}
}while($rs->MoveNext());
//al terminar se ha construido un array con arrays anidados.
echo json_encode($nodos);