db = SPDO::singleton(); } /* Autor: Carlos Augusto Espinoza Galarza Descripcion: Generamos la clase Pagina con los tres principales pilares Update - Deleted - Insert Fecha Creación: 28/02/2009 Modificado: Noe Medina Arce Descripcion: Adecuar funciones para trabajar en singleton Fecha Modificación: 03/08/2010 */ //Establecemos el valor de la tabla a emplear public function setTableName($valor=NULL){ $this->tableName = $valor; } public function setFieldArray($valuesArray=NULL){ if(!is_null($valuesArray) && (count($valuesArray) > 0)){ $this->fieldArray = $valuesArray; } } public function setIdKey($value = NULL){ $this->id['key'] = $value; } public function setIdValue($value = NULL){ $this->id['value'] = $value; } public function setQuery($value=NULL){ $this->strQuery = $value; } //obtenemos el valor de la tabla que estamos trabajando public function getTableName(){ return $this->tableName; } public function getQuery(){ return $this->strQuery; } public function execute(){ $query = $this->db->prepare($this->strQuery); //$query = $this->db->prepare('select * from items'); $query->execute(); //$this->db->execute(); return $query; //return $this->strQuery; } /*Ahora vamaos hacer los 3 Procesos Básicos Insert-Update-Deleted*/ public function insert($datos=""){ if(!empty($datos) && is_array($datos)){ $arr_atributos = $datos; }else{ $arr_atributos = $this->fieldArray; } $count_atributos = count($arr_atributos); if ($count_atributos!=0){ $cad_insert = "";//-->inicializamos en vacio $cont_aux = 1; /**** Generamos la cadena de inserccion ***/ $cad_values=""; $cad_insert.="INSERT INTO ".$this->tableName." ("; foreach ($arr_atributos as $key=>$value){ if ($cont_aux==$count_atributos){ $cad_insert.=$key; $value1=trim($value); if (empty($value1)) $cad_values.="'NULL'"; else $cad_values.="'".$value1."'"; }else{ $cad_insert.=$key.","; $value1=trim($value); if (empty($value1)) $cad_values.="'NULL',"; else $cad_values.="'".$value1."',"; } $cont_aux++; } $cad_insert.=") "; $cad_insert.=" VALUES ("; $cad_insert.=$cad_values; $cad_insert.=")"; $this->setQuery($cad_insert); $resultado = $this->execute(); if($resultado){ $id = $this->db->lastInsertId(); $mensaje = " Insercion satisfactoria "; }else{ $id = 0; $mensaje = " Error en la cadena de insercion"; } }else{ $id = 0; $mensaje = "La sentencia ha venido vacia no se puede insertar los datos"; //exit(); } return array($resultado,$id,$mensaje); } public function update($datos=""){ if(!empty($datos) && is_array($datos)){ $arr_atributos = $datos; }else{ $arr_atributos = $this->fieldArray; } $count_atributos = count($arr_atributos); if ($count_atributos!=0){ $cad_update = "";//-->inicializamos en vacio $cont_aux = 1; /****Generamos la cadena de inserccion***/ $cad_values=""; $cad_update.="UPDATE ".$this->tableName." "; $cad_update.=" SET "; foreach ($arr_atributos as $key=>$value){ if ($cont_aux==$count_atributos){ $value1=trim($value); if (empty($value1)) $cad_update.=$key." = '' "; else $cad_update.=$key." = '".$value."' "; } else{ $value1=trim($value); if (empty($value1)) $cad_update.=$key." = '".$value."', "; else $cad_update.=$key." = '".$value."', "; } $cont_aux++; } $cad_update.=" WHERE ".$this->id['key']." = ".$this->id['value'].""; $this->setQuery($cad_update); $resultado = $this->execute(); if($resultado){ $mensaje = " Datos actualizados satisfactoriamente"; }else{ $mensaje = " Problemas al actualizar los datos"; } } else{ $mensaje = "La sentencia ha venido vacia no se puede actualizar los datos"; } return array ($resultado,$mensaje); } public function delete($id=""){ $resultado = ""; $mensaje = ""; if(!empty($id)){ $this->setIdValue($id); } $arr_atributos = $this->fieldArray; $existe_pk = $this->validateId($this->id['value']); if ($existe_pk==1){ $cad_delete = ""; $cad_delete.= " DELETE FROM ".$this->tableName." "; $cad_delete.= " WHERE ".$this->id['key']." = ".$this->id['value'].""; $this->setQuery($cad_delete); $resultado = $this->execute(); if($resultado){ $mensaje = " registro eliminado satisfactoriamente "; }else{ $mensaje = " El registro no pudo ser eliminado "; } }else{ $mensaje = "El registro que desea Eliminar no existe en nuestra Base de Datos o Está en Blanco la llave."; } return array($resultado, $mensaje); } private function validateId(){ if (!empty($this->id['key']) && !empty($this->id['value'])){ $cad_verfi = "SELECT COUNT(".$this->id['key'].") as total FROM ".$this->tableName." WHERE ".$this->id['key']." =".$this->id['value']; $this->setQuery($cad_verfi); //$resultado = $this->execute(); $row = $this->loadObjectList(); $total_registros = $row[0]->total; if ($total_registros!=0) return "1"; //--> existe else return "0"; //--> no existe } else{ return "0"; //--> no existe } } public function getObjectList(){ $stmt=$this->setQuery($this->strQuery); return $this->loadObjectList(); } public function getObject(){ $stmt=$this->setQuery($this->strQuery); if( $result = $this->execute() ){ $obj = $result->fetchObject(); return $obj; }else{ return null; } } public function loadObjectList(){ if ( ! ( $cur = $this->execute() ) ){ return null; } $array = array(); while ( $obj = $cur->fetchObject() ){ //fetchObject() $array[] = $obj; } return $array; } //NOE MEDINA ARCE 20100507 public function getPager($datos = array("total" => 0, "inicio" => 0, "pagina" => 5)){ $num_registros = $datos['total']; //total registros $tam_pag = $datos['pagina'];// tamaño de pagina a mostrar $inicio = $datos['inicio'];// inicio establecido de pagina a mostrar //Generando el arreglo paginas. if(is_numeric($num_registros)){ if($num_registros < $tam_pag){ $arreglo_paginas[0] = 0; }else{ $num_paginas = $num_registros / $tam_pag; $num_paginas = floor($num_paginas); if(($num_registros%$tam_pag)>0){ $num_paginas++; } $arreglo_paginas = ""; $acumulado = 0; for($i=0;$num_paginas>$i;$i++){ $arreglo_paginas[$i] = $acumulado; $acumulado = $acumulado + $tam_pag; } } }else{ $arreglo_paginas = "error"; } $paginas = $arreglo_paginas; //Generando el arreglo navegador $b = count($arreglo_paginas); //echo("cantidad de paginas $b"); $pagina_inicio = $arreglo_paginas[0]; for($a=0;$b>$a;$a++){ if($arreglo_paginas[$a] == $inicio){ @$pagina_anterior = $arreglo_paginas[$a-1]; @$pagina_siguiente = $arreglo_paginas[$a+1]; if($a==0){ @$pagina_anterior = $arreglo_paginas[0]; @$pagina_siguiente = $arreglo_paginas[$a+1]; } if($a==$b-1){ @$pagina_anterior = $arreglo_paginas[$a-1]; @$pagina_siguiente = $arreglo_paginas[$b-1]; } } } //pagina final $x = count($arreglo_paginas); $pagina_final = $arreglo_paginas[$x-1]; //generando el arreglo $navegador["inicio"] = $pagina_inicio; $navegador["anterior"] = $pagina_anterior; $navegador["siguiente"] = $pagina_siguiente; $navegador["fin"] = $pagina_final; return array($paginas,$navegador); } } ?>