Elementos de desarrorllo

Este es una lista de las generalidades del proyecto

Estructura de archivos

la estructura esta formada por :

Estructura de base de datos

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
);

 

librerias (lib)

 

Desarrollo 

Creacion de scripts de presentacion ejemplo

  1. Crear el directorio donde estaran alojados los archivos siguiendo el esquema antes mencionado en el directorio buil/view
  2. crear la opcion en la base de datos por la opcion de administracion de modulos a fin de ver el id del componente.
  3. crear el acrivo <opcion>_i.php
  4. incluir los siguientes archivos :
    1. conf/system.php: variables generales
    2. conf/sesiones.php:manejo de sesion ,base de datos , por defecto vienen incluidas los controladores de core_sql core_error
  5. Cargar los controladores q el script necesita : usar la variable $controllers.<nombre_tabla >.php
  6. Definir una funcionde inicio con el nombre: inicioComponente_<id_componente> ya que el sistema automaticamente carga esta funcion para construir la opcion en el menu.

Creación de scripts de manejo ejemplo de estructura del archivo

  1. junto al archivo _i.php crear el archivo <opcion>_l.php
  2. incluir los siguientes archivos :
    1. conf/system.php: variables generales
    2. conf/sesiones.php:manejo de sesion ,base de datos , por defecto vienen incluidas los controladores de core_sql core_error
  3. Cargar los controladores q el script necesita : usar la variable $controllers.<nombre_tabla >.php
  4. definir dentro de un switch los procedimientos a seguir para las acciones lista, add, mod, del basicas

 

algo de codigo

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);