Foros del Web » Programando para Internet » PHP »

[Aporte] Class Paginador & Upload

Estas en el tema de [Aporte] Class Paginador & Upload en el foro de PHP en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original # Mysql     class Cm_mysql {                 # Conexion     ...
  #1 (permalink)  
Antiguo 10/01/2013, 18:30
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Sonrisa [Aporte] Class Paginador & Upload

Código PHP:
Ver original
  1. # Mysql
  2.     class Cm_mysql{
  3.        
  4.         # Conexion
  5.         public function Conectar(){
  6.            
  7.             $Conexion = mysql_connect('localhost', 'root', '');
  8.             mysql_select_db('db',$Conexion);
  9.        
  10.         }
  11.        
  12.         # Consulta
  13.         public function Consulta($Consulta){
  14.            
  15.             return mysql_query($Consulta);
  16.            
  17.         }
  18.        
  19.         # Reg_Num
  20.         public function Reg_Num($Consulta){
  21.        
  22.             return mysql_num_rows($Consulta);
  23.        
  24.         }
  25.        
  26.         # Assoc
  27.         public function Assoc($Consulta){
  28.        
  29.             return mysql_fetch_assoc($Consulta);
  30.        
  31.         }
  32.        
  33.         # String Search
  34.         public function Con_Like($Consulta,$Por,$Text){
  35.        
  36.             return mysql_query($Consulta.' WHERE '.$Por.' LIKE '.'"'.$Text.'"');
  37.        
  38.         }
  39.        
  40.     }
  41.  
  42.  
  43.     # Convert
  44.     class Cm_Convert{
  45.         # Certifica Valor existente, Convierte a int
  46.         public function ParseValInt($GetPost){
  47.                
  48.             if(isset($GetPost) && $GetPost!==''){
  49.                
  50.                 $Devuelve = intval($GetPost);
  51.                 return $Devuelve;
  52.                
  53.             }else{
  54.                
  55.                 $Devuelve = 0;
  56.                 return $Devuelve;
  57.                
  58.             }
  59.         }
  60.     }
  61.  
  62.  
  63.  
  64. # --- Paginador
  65. class Cm_Paginador{
  66.    
  67.     # --- Configuracion
  68.     var $Posicion,$Botones,$Base,$Article,$Order,$Mysql,$Query,$Exect,$Cant,$Paginas,$Comming,$Consulta,$Estructura;
  69.    
  70.     # --- Mysql
  71.     public function _Mysql($Mysql,$base,$article,$orden,$Posicion){
  72.        
  73.         # --- Mysql
  74.         $this->Base  = $base;
  75.         $this->Order = $orden;
  76.         $this->Article = $article;
  77.         $this->Mysql    = $Mysql;
  78.         $this->Posicion = $Posicion;
  79.         $this->Mysql->Conectar();
  80.         $this->Query = "SELECT * FROM ".($this->Base);
  81.         $this->Exect = $this->Mysql->Consulta($this->Query);
  82.        
  83.         # --- Condicionales
  84.         $this->Cant     = $this->Mysql->Reg_Num($this->Exect);
  85.         $this->Paginas  = ceil($this->Cant/$this->Article);
  86.         $this->Comming  = $this->Article*$this->Posicion;
  87.         $Desde          = $this->Posicion*$this->Paginas;
  88.    
  89.         # --- Consulta
  90.         $this->Consulta = $this->Mysql->Consulta($this->Query.' ORDER BY id '.$orden.' LIMIT '.$Desde.' , '.$this->Cant);
  91.    
  92.     }
  93.    
  94.     # --- Estructura
  95.     public function _Estructure($estructure){
  96.        
  97.         $this->Estructura = $estructure;
  98.        
  99.     }
  100.    
  101.     # --- Devolucion
  102.     public function _Devolucion(){
  103.        
  104.                
  105.         while($Campo = $this->Mysql->Assoc($this->Consulta)){
  106.            
  107.             $str = $this->Estructura;  
  108.            
  109.             foreach($Campo as $clave => $valor) {
  110.                    
  111.                 $str = str_replace('{'.$clave.'}',$valor,$str);
  112.                
  113.                
  114.             }
  115.            
  116.             echo $str;
  117.  
  118.         }
  119.        
  120.  
  121.     }
  122.    
  123.     # --- Navegacion
  124.     public function _Navegacion($botones){
  125.        
  126.         # Vars
  127.         $this->Botones = $botones;
  128.        
  129.         if(($this->Botones)>=3){
  130.            
  131.             // next
  132.             if((($this->Posicion)+1)>1 && ($this->Paginas)>1){
  133.                
  134.                 echo '<input type="button" onClick="Paginacion('.($this-Posicion).')" value="next">';
  135.                
  136.             }
  137.            
  138.             // numbers
  139.             for($i = 1;$i<$this->Botones;$i++){
  140.            
  141.                 if($i<$this->Paginas){
  142.                    
  143.                     echo '<input type="button" value="'.$i.'" onClick="Paginacion('.$i.')">';
  144.                        
  145.                 }
  146.            
  147.             }
  148.            
  149.             // prev
  150.             if((($this->Posicion)+1)<($this->Paginas)){
  151.                
  152.                 echo '<input type="button" onClick="Paginacion('.(($this->Posicion)+2).')" value="prev">';
  153.                
  154.             }
  155.    
  156.         }
  157.        
  158.         if(($this->Botones)<=2){
  159.        
  160.                    
  161.             // next
  162.             if((($this->Posicion+1))>1 && ($this->Paginas)>1){
  163.                
  164.                 echo '<input type="button" onClick="Paginacion('.($this->Posicion).')" value="next">';
  165.                    
  166.             }
  167.    
  168.             // prev
  169.             if((($this->Posicion)+1)<($this->Paginas)){
  170.                    
  171.                 echo '<input type="button" onClick="Paginacion('.(($this->Posicion)+2).')" value="prev">';
  172.                    
  173.             }
  174.                            
  175.         }
  176.        
  177.     }
  178.    
  179. }
  180.  
  181.  
  182.  
  183.  
  184.     # Upload
  185.     class Cm_Upload{
  186.        
  187.         # Forma de uso
  188.         # $Upload->UploadConfig($Name,$Path);
  189.         # $Upload->_Type();
  190.         # $Upload->_MinSize();
  191.         # $Upload->_MaxSize();
  192.         # $Upload->_UploadSave();
  193.        
  194.         # Configuracion
  195.         protected   $_Name      = NULL;
  196.         protected   $_Path      = NULL;
  197.         private     $_Type      = NULL;
  198.         private     $_MinSize   = NULL;
  199.         private     $_MaxSize   = NULL;
  200.        
  201.         # Privates & Condicionales
  202.         private     $_Extencion     = NULL;
  203.         private     $states         = 0;
  204.        
  205.         # Constructor
  206.         public function UploadConfig($Name,$Path){
  207.            
  208.             $this->_Name        = $Name;
  209.             $this->_Path        = $Path;
  210.            
  211.         }
  212.        
  213.         # Convertor Bytes
  214.         private function _ConvertBytes($size){
  215.             if (is_int($size) || ctype_digit($size)) {
  216.                 return (int) $size;
  217.             }
  218.    
  219.             $tipo = strtolower(substr($size, -1));
  220.             $size = (int) $size;
  221.    
  222.             switch ($tipo) {
  223.                 case 'g': //Gigabytes
  224.                     $size *= 1073741824;
  225.                     break;
  226.                 case 'm': //Megabytes
  227.                     $size *= 1048576;
  228.                     break;
  229.                 case 'k': //Kilobytes
  230.                     $size *= 1024;
  231.                     break;
  232.                 default :
  233.                     $size = -1;
  234.                    
  235.             }
  236.    
  237.             return $size;
  238.         }
  239.        
  240.         # MinSize
  241.         public function _MinSize($int){
  242.             $this->_MinSize = $this->_ConvertBytes($int);
  243.            
  244.         }
  245.        
  246.         # MaxSize
  247.         public function _MaxSize($int){
  248.            
  249.             $this->_MaxSize = $this->_ConvertBytes($int);
  250.            
  251.         }
  252.        
  253.         # Type
  254.         public function _Type($array){
  255.            
  256.             if(!is_array($array)){
  257.                
  258.                 $array = explode(',',$array);
  259.                
  260.             }
  261.            
  262.             $this->_Type = $array;
  263.            
  264.         }
  265.        
  266.         # Extencion
  267.         private function _Extencion(){
  268.            
  269.             $var = explode('.',$_FILES[$this->_Name]['name']);
  270.             $this->_Extencion = strtolower(end($var));
  271.  
  272.         }
  273.        
  274.         # Validador
  275.         private function _Validator(){
  276.            
  277.             # MinSize
  278.             if($this->_MinSize!==NULL && $_FILES[$this->_Name]['size'] < $this->_MinSize){
  279.                                
  280.                 echo 'El archivo es inferior a los '.$this->_MinSize.' bytes';
  281.                 $this->states = 0;
  282.                    
  283.             }
  284.                
  285.             # MaxSize
  286.             if($this->_MaxSize!==NULL && $_FILES[$this->_Name]['size'] > $this->_MaxSize){
  287.                
  288.                 echo 'El archivo es mayor a los '.$this->_MaxSize.' bytes';
  289.                 $this->states = 0;
  290.                    
  291.             }
  292.                
  293.             # Extencion
  294.             if($this->_Extencion!==NULL && !in_array($this->_Extencion,$this->_Type)){
  295.            
  296.                     echo 'El archivo no es valido.';
  297.                     $this->states = 0;
  298.                
  299.                 }
  300.                
  301.             # Escribir Carpeta
  302.             if($this->_Path!==NULL && !is_writable($this->_Path)){
  303.                
  304.                 echo 'Lo sentimos pero no tienes permisos para escribir en '.$this->_Path;
  305.                 $this->states = 0;
  306.             }
  307.                
  308.             $this->states = 1;     
  309.         }
  310.        
  311.         # UploadSave
  312.         public function _UploadSave($name){
  313.            
  314.             # Extencion
  315.             $this->_Extencion();
  316.            
  317.             # Validador
  318.             $this->_Validator();
  319.            
  320.             # Verificacion
  321.             if(intval($this->states)==1){
  322.                
  323.                 if(move_uploaded_file($_FILES[$this->_Name]['tmp_name'],$this->_Path.'/'.$name.'.'.$this->_Extencion))
  324.                     echo 1;
  325.                 else
  326.                     echo 0;
  327.             }
  328.         }
  329.        
  330.     }



Forma de uso

Código PHP:
Ver original
  1. # Upload
  2.     $Upload->UploadConfig('Foto','Carpeta'); # nombre $_FILES[nombre], Carpeta
  3.     $Upload->_Type('jpg,png,gif,bmp'); # tipos
  4.     $Upload->_MinSize('12k'); # k, m, g
  5.     $Upload->_MaxSize('2m'); # k, m, g
  6.     $Uploaded = $Upload->_UploadSave('Producto'.$Rand); # Parametro: Nombre
  7.  
  8.     # Paginator
  9.     $Page = $Convert->ParseValInt($_POST['Page']);
  10.    
  11.     echo '<div class="Titulos"><h1>Titulo</h1> <h1><img src="../../Nayla/Imagenes/Ui/linedpaper32.png">Pie</h1> <h1><img src="../../Nayla/Imagenes/Ui/gear32.png">Acciones</h1></div>';
  12.  
  13.     $Paginator->_Mysql(new Cm_mysql,'Albums',5,'DESC',$Page);
  14.     $Paginator->_Estructure('<div class="Album" id="Album_{id}"><h1>{Titulo}</h1><p>{MinPie} ...</p><span><a href="http://laentreviasrock/Albums/{Slug}" title="Acceder al evento (seras redireccionado)" class="Ver"></a><input type="button" title="Agregar fotos al album." class="Agregar"><input type="button" title="Acceder a editar el evento." class="Editar"><input type="button" title="Eliminar el evento" class="Eliminar"></span></div>');
  15.     $Paginator->_Devolucion();
  16.     $Paginator->_Navegacion(5);

El que sepa adaptarlo el upload de simple a multiple también me serviria mucho, ya estoy medio quemado con el upload :p
  #2 (permalink)  
Antiguo 10/01/2013, 18:45
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: [Aporte] Class Paginador & Upload

Para obtener el numero de registros no deberías hacer un "SELECT * " y luego un mysql_num_rows..Estás obteniendo todas las filas de la base de datos, cuando un select count(*), o un SQL_CALC_FOUND_ROWS es muchisimo más ligero.Y, dependiendo del volumen de datos, y del storage engine, una tabla aparte con contadores, más rápido aún.
  #3 (permalink)  
Antiguo 10/01/2013, 23:18
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Respuesta: [Aporte] Class Paginador & Upload

Gracias por la recomendacion la tomare en cuenta :)
  #4 (permalink)  
Antiguo 10/01/2013, 23:29
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: [Aporte] Class Paginador & Upload

Sería bueno que usaras PDO_Mysql o mínimo Mysqli.

Cita:
Mysql_*: Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro. En su lugar, deberían usarse las extensiones MySQLi o PDO_MySQL.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 11/01/2013, 08:37
Avatar de fishdesign  
Fecha de Ingreso: abril-2011
Ubicación: Málaga
Mensajes: 389
Antigüedad: 13 años
Puntos: 95
Respuesta: [Aporte] Class Paginador & Upload

Qué significa "Extencion"?

Si programamos con faltas de ortografía, mal empezamos...
__________________
Web Designer.
Themes-Up!, próximamente
  #6 (permalink)  
Antiguo 12/01/2013, 20:06
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Respuesta: [Aporte] Class Paginador & Upload

Cita:
Iniciado por andresdzphp Ver Mensaje
Sería bueno que usaras PDO_Mysql o mínimo Mysqli.
a disculpame no lo sabia, ahora me pongo a ver que es eso de mysqli y pdo_mysql, no tengo conocimientos al respecto.

lo estudio , lo adapto, y subo la version con mysqli o pdo_mysql :)
  #7 (permalink)  
Antiguo 12/01/2013, 20:19
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Respuesta: [Aporte] Class Paginador & Upload

Cita:
Iniciado por fishdesign Ver Mensaje
Qué significa "Extencion"?

Si programamos con faltas de ortografía, mal empezamos...
estaba medio quemado con esa clase , igual se agradecería algún apoyo, ya que mi intención era dar alguna ayuda aunque 1 sola persona le sirva esto...

  #8 (permalink)  
Antiguo 12/01/2013, 23:51
 
Fecha de Ingreso: septiembre-2012
Ubicación: Buenos aires
Mensajes: 110
Antigüedad: 11 años, 6 meses
Puntos: 9
Respuesta: [Aporte] Class Paginador & Upload

@andresdzphp , ya lo adapte a mysqli y elimine las variables inecesarias [para el paginador] xD

Código PHP:
Ver original
  1. <?
  2. # Mysql
  3. class Cm_mysql {
  4.    
  5.     protected $Conexion;
  6.    
  7.     # Conexion
  8.     public function Conectar(){
  9.        
  10.         $this->Conexion = mysqli_connect('localhost', 'root', '','levr');
  11.    
  12.     }
  13.    
  14.     # Consulta
  15.     public function Consulta($Consulta){
  16.        
  17.         return mysqli_query($this->Conexion,$Consulta);
  18.        
  19.     }
  20.    
  21.     # Reg_Num
  22.     public function Reg_Num($Consulta){
  23.    
  24.         return mysqli_num_rows($Consulta);
  25.    
  26.     }
  27.    
  28.     # Assoc
  29.     public function Assoc($Consulta){
  30.    
  31.         return mysqli_fetch_assoc($Consulta);
  32.    
  33.     }
  34.    
  35.     # String Search
  36.     public function Con_Like($Consulta,$Por,$Text){
  37.    
  38.         return mysqli_query($this->Conexion,$Consulta.' WHERE '.$Por.' LIKE '.'"'.$Text.'"');
  39.    
  40.     }
  41.    
  42. }
  43.  
  44. # Paginador
  45. class Cm_Paginador extends Cm_mysql{
  46.    
  47.     # Forma de uso
  48.     # Se debe iniciar la conexion primero.
  49.     # $Paginator->_Mysql($base:string,$article:int,$orden:string,$posicion:string);
  50.     # $Paginator->_Estructure($estructure:string);
  51.     # $Paginator->_Devolucion();
  52.     # $Paginator->_Navegacion($botones:int);
  53.    
  54.     # Configuracion
  55.     private $Mysql;
  56.     private $Estructura;
  57.     private $Posicion;
  58.     private $Paginas;
  59.     private $Botones;
  60.     private $Consulta;
  61.    
  62.     # Mysql
  63.     public function _Mysql($base,$article,$orden,$Posicion){
  64.        
  65.         # Mysql
  66.         $this->Mysql    = parent::$Conexion;
  67.         $Query          = "SELECT * FROM ".($base);
  68.         $Exect          = parent::Consulta($Query);
  69.         $Cant           = parent::Reg_Num($Exect);
  70.  
  71.         # Constructor
  72.         $this->Posicion = $Posicion;
  73.         $this->Paginas  = ceil($Cant/$article);
  74.         $Desde          = $Posicion*$this->Paginas;
  75.        
  76.         # --- Consulta
  77.         $this->Consulta = parent::Consulta($Query.' ORDER BY id '.$orden.' LIMIT '.$Desde.' , '.$Cant);
  78.    
  79.     }
  80.    
  81.     # --- Estructura
  82.     public function _Estructure($estructure){
  83.        
  84.         $this->Estructura = $estructure;
  85.        
  86.     }
  87.    
  88.     # --- Devolucion
  89.     public function _Devolucion(){
  90.        
  91.                
  92.         while($Campo = parent::Assoc($this->Consulta)){
  93.            
  94.             $str = $this->Estructura;  
  95.            
  96.             foreach($Campo as $clave => $valor) {
  97.                    
  98.                 $str = str_replace('{'.$clave.'}',$valor,$str);
  99.                
  100.                
  101.             }
  102.            
  103.             echo $str;
  104.  
  105.         }
  106.        
  107.  
  108.     }
  109.    
  110.     # --- Navegacion
  111.     public function _Navegacion($botones){
  112.        
  113.         # Vars
  114.         $this->Botones = $botones;
  115.        
  116.         if(($botones)>=3){
  117.            
  118.             // next
  119.             if((($this->Posicion)+1)>1 && ($this->Paginas)>1){
  120.                
  121.                 echo '<input type="button" onClick="Paginacion('.($this-Posicion).')" value="next">';
  122.                
  123.             }
  124.            
  125.             // numbers
  126.             for($i = 1;$i<$botones;$i++){
  127.            
  128.                 if($i<$this->Paginas){
  129.                    
  130.                     echo '<input type="button" value="'.$i.'" onClick="Paginacion('.$i.')">';
  131.                        
  132.                 }
  133.            
  134.             }
  135.            
  136.             // prev
  137.             if((($this->Posicion)+1)<($this->Paginas)){
  138.                
  139.                 echo '<input type="button" onClick="Paginacion('.(($this->Posicion)+2).')" value="prev">';
  140.                
  141.             }
  142.    
  143.         }
  144.        
  145.         if(($botones)<=2){
  146.        
  147.                    
  148.             // next
  149.             if((($this->Posicion+1))>1 && ($this->Paginas)>1){
  150.                
  151.                 echo '<input type="button" onClick="Paginacion('.($this->Posicion).')" value="next">';
  152.                    
  153.             }
  154.    
  155.             // prev
  156.             if((($this->Posicion)+1)<($this->Paginas)){
  157.                    
  158.                 echo '<input type="button" onClick="Paginacion('.(($this->Posicion)+2).')" value="prev">';
  159.                    
  160.             }
  161.                            
  162.         }
  163.        
  164.     }
  165.    
  166. }
  167.  
  168. ?>

Etiquetas: class, paginador, upload
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:29.