Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/03/2010, 16:10
Avatar de santris
santris
 
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 3 meses
Puntos: 66
[Aporte]galería de imágenes

Hola a todos/as,

Ya que son muchas las peticiones para subir imagenes al servidor, he creado esta pequena aplicación para hacer una galería de imagenes relacionada con un usuario.

Es una aplicación muy básica por lo que necesitará de vuestros aportes para ir mejorando.

Si os parece bien iré modificando el código que expongo a continuación a medida que vallamos aportando ideas.

El objetivo sería en primer lugar divertirnos y luego ver hasta donde se puede llegar con php-mysql, css y jscript.

Pues nada más a quien le apetezca aportar aquí dejo el código base:

La aplicación se encuentra funcionando en: http://www.linkalis.com/galeria/index.php

código index.php
Código PHP:
<?php 
session_start
();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?php
include("galeria_usuario.php");
if(isset(
$_GET['img_r']))
echo 
"<br/><br/><img border=0 src='images/".$_GET['img_r']."' />";
?>
</body>
</html>
código galeria_usuario.php

Código PHP:
<?php
$_SESSION
["usuario"]=1;//asignamos el valor al identificador de usuario
include("galeria.php");
$mi_galeria= new galeria();
$mi_galeria->usuario "user";//usuario base de datos
$mi_galeria->pass "*****";//pass base de datos
$mi_galeria->host "localhost";//host
$mi_galeria->db "name";//nombre base de datos
$mi_galeria->v_ancho=400;//ancho max de las imagenes
$mi_galeria->v_ancho_tumb=50;//ancho de los thumbnails
$mi_galeria->str_dir="images/";//directorio imagenes
$mi_galeria->user=$_SESSION["usuario"];//usuario imagenes
$mi_galeria->desc=$_POST["desc"];//descripci&oacute;n imagen
if(isset($_FILES["file"])){
$mi_galeria->tmp_img=$_FILES["file"]["tmp_name"];//directorio temporal
$mi_galeria->str_img=$_FILES["file"]["name"];//nombre imagen
$mi_galeria->max_size=$_FILES["file"]["size"];//tamaño imagen
$mi_galeria->tipo=$_FILES["file"]["type"];//tipo imagen
$mi_galeria->create_table();//crea la tabla images asociada al usuario
$mi_galeria->subir_img();//sube las imagenes
echo $mi_galeria->msg;//muestra los mensajes
}
?>
<form action="galeria_usuario.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <label>Imagen<br />
  <input type="file" name="file" />
  </label>
  <p>
    <label>Descripción<br />
    <textarea name="desc" cols="40" rows="4" id="desc"></textarea>
    </label>
  </p>
  <p>
    <label>
    <input type="submit" name="Submit" value="Enviar" />
    </label>
  </p>
</form>
<?php
$mi_galeria
->ver_galeria();//muestra la galeria
?>
la clase galeria.php

Código PHP:
<?php
/*
-Requisitos-
-php5
-librería GDI activada
-permisos de escritura en el directorio de las imagenes
*/
class galeria {

public 
$usuario='';
public 
$pass='';
public 
$host='';
public 
$db='';
public 
$v_ancho;
public 
$v_ancho_tumb;
public 
$tmp_img='';
public 
$str_img='';
public 
$str_dir='';
public 
$user='';
public 
$msg='';
public 
$desc='';
public 
$max_size='';
public 
$tipo='';

/////////////////////////////////conecta con la base de datos
    
function conect(){
        
$con_md mysql_pconnect($this->host$this->usuario$this->pass ) or trigger_error(mysql_error());
        
$conmysql_select_db($this->db$con_md);
        return 
$con;
        }
////////////////////////////////pendiente
    
function __construct(){
        }
///////////////////////////////crea la tabla images    
    
function create_table(){
        
$this->conect();
        
$sql 'CREATE TABLE `images` ('
        
' `id_image` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, '
        
' `id_user` INT(11) NOT NULL, '
        
' `name_image` VARCHAR(60) NOT NULL, '
        
' `fecha_image` DATE NOT NULL, '
        
' `desc_image` VARCHAR(225) NOT NULL'
        
' )'
        
' ENGINE = myisam;';
        
mysql_query($sql);
        }
/////////////////////////////sube la imagen y crea el thumbnail
    
function subir_img(){
        if(
$this->valida_img()){        
            
$this->conect();
            
$this->str_img str_replace(" ","_",$this->str_img);    
            if(
move_uploaded_file($this->tmp_img$this->str_dir.$this->str_img)){    
                if(
$this->v_ancho 0){
                    
$imgsrc=$this->str_dir.$this->str_img;
                    
$imgnew=$this->str_dir.$this->str_img;
                    
$ancho=getimagesize($imgsrc);
                    
$factor=$this->v_ancho/$ancho[0]; 
                    
$newx=$ancho[0]*$factor;
                    
$newy=$ancho[1]*$factor
                    
$quality=80;         
                    
$this->fun_resizejpg($imgsrc,$imgnew,$newx,$newy,$quality);
                }
                    
$imgsrc=$this->str_dir.$this->str_img;
                    
$imgnew=$this->str_dir."tumb_".$this->str_img;
                    
$ancho=getimagesize($imgsrc);
                    
$factor=$this->v_ancho_tumb/$ancho[0]; 
                    
$newx=$ancho[0]*$factor;
                    
$newy=$ancho[1]*$factor
                    
$quality=80;         
                    
$this->fun_resizejpg($imgsrc,$imgnew,$newx,$newy,$quality);
                    if(
strlen($this->desc)==0)
                    
$this->desc="Sin descripci&oacute;n";
                    
$insertSQL sprintf("INSERT INTO images (id_user, name_image, fecha_image, desc_image) VALUES (%s, %s, %s, %s)",
                           
$this->GetSQLValueString($this->user"int"),
                           
$this->GetSQLValueString($this->str_img"text"),
                           
$this->GetSQLValueString(date('Y-m-d'), "date"),
                           
$this->GetSQLValueString($this->desc"text"));
                if(
mysql_query($insertSQL) or die(mysql_error()))
                    
$this->msg="Imagen insertada correctamente";
                else
                    
$this->msg="La imagen no pudo ser insertada 1";
            }
            else
                
$this->msg="La imagen no pudo ser insertada 2";
        }
        else
            return 
$this->msg;
    }
////////////////////////////muestra la galeria
    
function ver_galeria(){
        
$this->conect();
        
$user_galeria=$this->user;
        
$sql="SELECT * FROM images WHERE id_user = $user_galeria";
        
$sqlquery=mysql_query($sql);
                
        while(
$row=mysql_fetch_array($sqlquery)){
            
//echo "<div>Imagen subida el ".$row["fecha_image"]."</div>";
            //echo "<div>Descripi&oacute;n ".$row["desc_image"]."</div>";
            
echo "<a href=index.php?img_r=".$row["name_image"]."><img border=0 src='".$this->str_dir."tumb_".$row["name_image"]."' /></a> ";
            
        }

    }
//////////////////////////validar la imagen tipo y tamaño    
    
function valida_img(){
        if(
$this->max_size 120000){
            
$this->msg="La imagen no debe exceder 1Mb";
            return 
false;
        }
            else{
                switch (
$this->tipo) {
                case 
"image/jpeg":
                    return 
true;
                    break;
                case 
"image/png":
                    return 
true;
                    break;
                case 
"image/gif":
                    return 
true;
                    break;
                default:
                
$this->msg="La imagen debe ser jpg, png o gif";
                echo 
"Archivo: ".$this->tipo."<br/>";
                return 
false;
                }
            }            
    }
//////////////////////////redimensiona la imagen        
    
function fun_resizejpg($imgsrc,$imgnew,$newx,$newy,$quality){  
        if( 
file_exists($imgsrc) )     {  
        list(
$srcx,$srcy,$ext) = getimagesize($imgsrc);       
        switch( 
$ext)       {    
        case 
:     
        
$old imagecreatefromgif($imgsrc);                     
        
$img imagecreate($srcx,$srcy);
        
imagecolorallocate($img255255255);                             
        
imagecopy($img,$old,0,0,0,0,$srcx,$srcy); 
        break;               
        case 
:     
        
$img imagecreatefromjpeg($imgsrc); 
        break;                           
        case 
:     
        
$img imagecreatefrompng($imgsrc);
         break;    
        case 
6:     
        
$img imagecreatefromwbmp($imgsrc);  
        break;               
        default:
        
print_r(getimagesize($imgsrc)); 
        return 
false;       }                
        
$tamx=$srcx;         
        
$tamy=$srcy;        
        if(
$srcx>$newx)
        
$pv=($srcx>$srcy)?$srcx/$newx:$srcy/$newy;        
        elseif(
$srcy>$newy)
        
$pv=($srcy>$srcx)?$srcy/$newy:$srcx/$newx;        
        if(isset(
$pv)){    
        
$srcx=ceil($srcx/$pv);     
        
$srcy=ceil($srcy/$pv);     }               
        
$new imagecreatetruecolor ($srcx$srcy);             
        
imagecopyresampled ($new$img0000$srcx$srcy$tamx$tamy);                     
        
imagejpeg($new,(substr($imgnew,0,strrpos($imgnew,"."))).".jpg",$quality);        
        
imagedestroy($img);              
        return 
true;    
        } 
        else 
        return 
false;
        }
/////////////////////////////evalua los datos
    
function GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue "")
    {
      
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
    
      switch (
$theType) {
        case 
"text":
          
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;    
        case 
"long":
        case 
"int":
          
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case 
"double":
          
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
          break;
        case 
"date":
          
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
          break;
        case 
"defined":
          
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
          break;
      }
      return 
$theValue;
    }

}
?>
__________________
Tu álbum de cromos online!!

Última edición por santris; 18/05/2010 a las 15:38