Foros del Web » Programando para Internet » PHP »

[APORTE] mantenimiento de imagenes en php y mysql

Estas en el tema de [APORTE] mantenimiento de imagenes en php y mysql en el foro de PHP en Foros del Web. buenas a todos. ustedes vieron en algunas aplicaciones (bueno en todas), ejemplos o sistemas reales de mantenimiento de datos como alumnos, catalogo de productos y ...
  #1 (permalink)  
Antiguo 16/02/2010, 09:19
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
[APORTE] mantenimiento de imagenes en php y mysql

buenas a todos. ustedes vieron en algunas aplicaciones (bueno en todas), ejemplos o sistemas reales de mantenimiento de datos como alumnos, catalogo de productos y afines. cuando un administrador o encargado desea editar los datos de la persona incluyendo subir la foto de esa persona, se modifica correctamente los datos, pero por otras razones de nuevo desea modificar como el nombre o el apellido y le da clic en guardar, se modifica correctamente y cuando desea ver los datos de la persona, no se muestra la foto o la imagen.

a que se debe ese error ?.

les explicare mediante una aplicacion de como editar datos con su respectiva imagen si que esta pierda su valor. en realidad esta aplicacion me enseñaron como hacerlo para uno de mis proyectos web y ahora les comparto a ustedes para que puedan implementarlo en sus respectivas aplicaciones.

lo primero que vamos a hacer es crear una base de datos. la base de datos la llamaremos agenda. dentro de la base de datos crearemos una tabla llamada datos (como lo mencione antes).

dentro de la tabla agenda, los campos serian nombres, apellidos, direccion, edad, telefono, email, sexo y foto.

Código MySQL:
Ver original
  1. --
  2. -- Base de datos: `agenda`
  3. --
  4.  
  5. -- --------------------------------------------------------
  6.  
  7. --
  8. -- Estructura de tabla para la tabla `datos`
  9. --
  10.  
  11. CREATE TABLE `datos` (
  12.   `idagenda` int(10) unsigned NOT NULL auto_increment,
  13.   `nombres` varchar(100) default NULL,
  14.   `apellidos` varchar(100) default NULL,
  15.   `direccion` varchar(100) default NULL,
  16.   `edad` varchar(100) default NULL,
  17.   `telefono` varchar(100) default NULL,
  18.   `email` varchar(100) default NULL,
  19.   `sexo` char(2) default NULL,
  20.   `foto` varchar(255) default NULL,
  21.   PRIMARY KEY  (`idagenda`)

una vez creada la base de datos y su tabla, procederemos a crear la conexion de la base de datos.

Conexion.class.php.

Código PHP:
Ver original
  1. <?php
  2.  /* Archivo             : conexion.class.php (PHP 4.X)
  3.  *  Version             : 1.0 MySQL
  4.  *  Ultima Modificacion : 18/03/06
  5.  */
  6.  
  7. class Conexion{
  8.    var $host = DB_SERVER1;
  9.    var $port = DB_PORT1;
  10.    var $user = DB_USER1;
  11.    var $password = DB_PWD1;
  12.    var $db  = DB_1;
  13.    var $idError = 0;
  14.    var $error = "";
  15.    var $link = NULL; // variable compartida para todas las instanicias de la clase
  16.    function Conexion($host = DB_SERVER1, $port = DB_PORT1, $user = DB_USER1, $password = DB_PWD1, $db = DB_1){
  17.     // parametros opcionales, tienen valores por defecto
  18.        $this->host = $host;
  19.        $this->port = $port;
  20.        $this->db    = $db;
  21.        $this->user = $user;
  22.        $this->password = $password;
  23.    }
  24.    // solo se conecta si es que la variable $link no esta cargada
  25.    // o no esta activa la conexion
  26.    function conectarse(){
  27.         if(!$this->estaConectada()){// si la conexion NO esta activa
  28.             $this->link = @mysql_connect($this->host,$this->user,$this->password);
  29.             // la @ evita que se imprima el error
  30.             if (!$this->link) {
  31.                 die( "<p class='error'>Problemas de conexion con la base de datos.</p>");
  32.             }
  33.             if(!(mysql_select_db($this->db,$this->link)))
  34.                 die( "<p class='error'>No puede utilizar la base de datos $this->db.</p>");
  35.         }
  36.    }
  37.    // cierra la conexion si es que esta conectada
  38.    function cerrar_conexion(){
  39.         if($this->estaConectada())
  40.         // se asegura que la conexion no se rompio bruscamente (fuera del close)
  41.             mysql_close($this->link);
  42.         $this->link = NULL;
  43.    }
  44.    // ejecuta la query cargada en $sql
  45.    // en caso de error carga el codigo y mensaje de error en idError y error respectivamente.
  46.    function query($sql){
  47.         $result = mysql_query($sql,$this->link);
  48.         if(!$result){
  49.             //echo $sql;       
  50.             $this->idError = mysql_errno($this->link);
  51.             $this->error = mysql_error($this->link);
  52.         }
  53.         return $result; // FALSE si la query falla
  54.    }
  55.    // retona la siguiente fila en un array asociativo
  56.    function fetch_array($result){
  57.         $fila = mysql_fetch_array($result);
  58.         return $fila;
  59.    }
  60.    // retorna el numero de filas del result_set ($result)
  61.    function num_rows($result){
  62.         $num_rows = mysql_num_rows($result);
  63.         return $num_rows;
  64.    }
  65.    // retorna un booleano indicando si la conexion esta activa
  66.    function estaConectada(){
  67.         if( $this->link != NULL && mysql_ping($this->link) )
  68.             return true;
  69.         else
  70.             return false;
  71.    }
  72. }
  73. ?>

despues crearemos el archivo config.inc.php.

Código PHP:
Ver original
  1. //mysql
  2. define("DB_SERVER1","localhost");
  3. define("DB_PORT1","3306"); //opcional
  4. define("DB_USER1","root");
  5. define("DB_PWD1","tu-clave");
  6. define("DB_1","agenda");

este archivo que he creado colocando la funcion define nos servira para definir el nombre del servidor (en este caso es localhost), el puerto de la base de datos es opcional (por defecto es el 3306),el nombre del usuario, la contraseña y la base de datos.

si gustan pueden crear una carpeta llamada includes para que guarden los archivos de la clase Conexion.class.php y el archivo config.inc.php.

Última edición por esaenz22; 16/02/2010 a las 10:45 Razón: correccion.
  #2 (permalink)  
Antiguo 16/02/2010, 09:54
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: [APORTE] mantenimiento de datos con su respectiva imagen si que esta se pi

continuacion del aporte parte II.

una vez que hemos creado el archivo php para la conexion de la base de datos, procederemos a crear los archivos php para agregar, editar y borrar la imagen.

lo primero que vamos a hacer es crear un archivo llamado funciones para hacer el insert, update y delete de los datos correspondientes.

creamos la funcion agregardatos dandole como parametros $nombres,$apellidos,$direccion,$edad,$telefono,$em ail,$sexo,$foto.

en en caso de editardatos le colocaremos el primer parametro $codigo para identificar el id de la tabla datos y lo demas seria ya colocarle los parametros como en la funcion agregardatos.

Código PHP:
Ver original
  1. function agregardatos($nombres,$apellidos,$direccion,$edad,$telefono,$email,$sexo,$foto){  
  2.     global $cn; //variable global de conexion.
  3.     $sql_datos  = "insert into datos(nombres,apellidos,direccion,edad,telefono,email,sexo,foto)";
  4.     $sql_datos .= "values('$nombres','$apellidos','$direccion','$edad','$telefono','$email','$sexo','$foto')";
  5.    
  6.     $cn->query($sql_datos) or die(mysql_error());
  7.    
  8.     header("Location:index.php");
  9.            
  10. }
  11.  
  12. function editardatos($codigo,$nombres,$apellidos,$direccion,$edad,$telefono,$email,$sexo,$foto){
  13.     global $cn;
  14.     $sql_edit  = "update datos set nombres = '$nombres', apellidos = '$apellidos', direccion = '$direccion', ";
  15.     $sql_edit .= "edad = '$edad', telefono = '$telefono', email = '$email', sexo = '$sexo', foto = '$foto' ";
  16.     $sql_edit .= "where idagenda = '$codigo'";
  17.    
  18.     $cn->query($sql_edit) or die(mysql_error());
  19.    
  20.     header("Location:index.php");
  21.            
  22. }  
  23.  
  24. function borrardatos($cod){
  25.     global $cn;
  26.     $eliimage = "select * from datos where idagenda = '$cod'";
  27.     $rowimages = mysql_query($eliimage) or die(mysql_error());
  28.     $rs_image = mysql_fetch_array($rowimages);
  29.    
  30.     $foto = $rs_image['foto'];
  31.     if($foto!=""){ //preguntamos si la foto es diferente a vacio, que borre la imagen.
  32.         @unlink("fotos/$foto");
  33.     }
  34.     $sql_del = "delete from datos where idagenda = '$cod'";
  35.     $cn->query($sql_del) or die(mysql_error());
  36.    
  37.     header("Location:index.php");
  38. }

despues crearemos el formulario para agregar y editar datos.

agregar.php

Código HTML:
Ver original
  1. <form action="process.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
  2.   <table width="523" border="0" cellpadding="2" cellspacing="0">
  3.     <tr>
  4.       <td width="172"><div align="right">Nombres</div></td>
  5.       <td colspan="2"><input name="nombres" type="text" id="nombres" size="40" /></td>
  6.     </tr>
  7.     <tr>
  8.       <td><div align="right">Apellidos</div></td>
  9.       <td colspan="2"><input name="apellidos" type="text" id="apellidos" size="40" /></td>
  10.     </tr>
  11.     <tr>
  12.       <td><div align="right">Direccion</div></td>
  13.       <td colspan="2"><input name="direccion" type="text" id="direccion" size="40" /></td>
  14.     </tr>
  15.     <tr>
  16.       <td><div align="right">Edad</div></td>
  17.       <td colspan="2"><input name="edad" type="text" id="edad" size="10" /></td>
  18.     </tr>
  19.     <tr>
  20.       <td><div align="right">Telefono</div></td>
  21.       <td colspan="2"><input name="telefono" type="text" id="telefono" size="20" /></td>
  22.     </tr>
  23.     <tr>
  24.       <td><div align="right">E-mail</div></td>
  25.       <td colspan="2"><input name="email" type="text" id="email" size="40" /></td>
  26.     </tr>
  27.     <tr>
  28.       <td><div align="right">Sexo</div></td>
  29.       <td colspan="2"><input type="radio" name="opcion" id="radio" value="M" />
  30.         M
  31.         <input type="radio" name="opcion" id="radio2" value="F" />
  32.         F</td>
  33.     </tr>
  34.     <tr>
  35.       <td><div align="right">Foto</div></td>
  36.       <td colspan="2"><input type="file" name="foto" id="foto" /></td>
  37.     </tr>
  38.     <tr>
  39.       <td>&nbsp;</td>
  40.       <td colspan="2">&nbsp;</td>
  41.     </tr>
  42.     <tr>
  43.       <td>&nbsp;</td>
  44.       <td width="148"><div align="center">
  45.         <input type="submit" value="Guardar" />
  46.       </div></td>
  47.       <td width="191"><div align="center">
  48.         <input type="button" value="Cancelar" onClick="javascript:history.back(1);" />
  49.       </div></td>
  50.     </tr>
  51.   </table>
  52. </form>

despues creamos el archivo process.php para llamar a las funciones que hemos creado.

Código PHP:
Ver original
  1. include("includes/Conexion.class.php");
  2. include("includes/config.inc.php");
  3. include("funciones.php");  
  4.  
  5. $cn= new Conexion(); //instanciamos la clase.
  6. $cn->conectarse(); //creamos el objeto conectarse().
  7.  
  8. $nombres        = $_POST['nombres'];
  9. $apellidos      = $_POST['apellidos'];
  10. $direccion  = $_POST['direccion'];
  11. $edad           = $_POST['edad'];
  12. $telefono   = $_POST['telefono'];
  13. $email      = $_POST['email'];
  14. $opcion         = $_POST['opcion'];
  15.  
  16. if(!isset($_POST['editar'])){//preguntamos si el valor editar esta definida y si es diferente, que haga el insert.
  17.     //preguntamos si el archivo foto esta vacio
  18.     if(is_uploaded_file($_FILES['foto']['tmp_name'])) {
  19.         #imagen del electrogeno.
  20.         $foto       = $_FILES['foto']['name'];
  21.         $nuevo_foto = str_replace(' ','_',$foto);
  22.         $test       = explode(".",$foto);
  23.        
  24.         $path = "fotos/";
  25.        
  26.         if(strtoupper($test[1])=="JPG" || strtoupper($test[1])=="JPEG")
  27.         {
  28.             $tamano = $_FILES['foto']['size']; // Leemos el tamaño del fichero
  29.             $tamano_max="1048576"; // Tamaño maximo permitido
  30.            
  31.             if($tamano <= $tamano_max){ // Comprovamos el tamaño                          
  32.                 move_uploaded_file($_FILES['foto']['tmp_name'],$path.$nuevo_foto);
  33.                 agregardatos($nombres,$apellidos,$direccion,$edad,$telefono,$email,$opcion,$nuevo_foto);
  34.             }else{
  35.                 echo "<div align = 'center'>La imagen que intenta grabar, excede el peso requerido. El maximo de peso es 500KB.</div>";
  36.                 echo "<br /><br /><br />";
  37.                 echo "<div align = 'center'><a href='javascript:history.back()'>&lt;&lt; Clic aqui para regresar.</div></a>";
  38.             } //cerramos el primer if.
  39.            
  40.         }else{
  41.             echo "<div align = 'center'>La imagen que intenta grabar, debe ser de formato JPG.</div>";
  42.             echo "<br />";
  43.             echo "<div align = 'center'><a href='javascript:history.back()'>&lt;&lt; Clic aqui para regresar.</div></a>";
  44.         } //cerramos el segundo if.
  45.    
  46.     //Si no hay imagen para agregar en la agenda, procederemos a agregar los datos sin la imagen.
  47.     }else{
  48.         agregardatos($nombres,$apellidos,$direccion,$edad,$telefono,$email,$opcion,$nuevo_foto);
  49.        
  50.     } //cerramos el tercer if.
  51.    
  52. } //cerramos el if principal.
  53.  
  54. if(isset($_POST['editar'])){ //preguntamos si el valor editar esta definida.
  55.     if($_POST['editar']=='1'){ //preguntamos si el valor editar es igual a 1.
  56.    
  57.             #editamos la foto del producto.
  58.             if($_FILES['foto']['size'] != '0' ){ //preguntamos si el tamaño del archivo es diferente a 0, que edite los datos con la imagen.          
  59.                 $foto = $_FILES['foto']['name'];
  60.                 $nuevo_foto = str_replace(' ','_',$foto);
  61.                 $test = explode(".",$foto);
  62.                
  63.                 $path = "fotos/";
  64.                
  65.                     if(strtoupper($test[1])=="JPG" || strtoupper($test[1])=="JPEG"){
  66.                         $tamano = $_FILES['foto']['size']; // Leemos el tamaño del fichero
  67.                         $tamano_max="1048576"; // Tamaño maximo permitido
  68.                         if($tamano <= $tamano_max){ // Comprovamos el tamaño                      
  69.                             move_uploaded_file($_FILES['foto']['tmp_name'],$path.$nuevo_foto); 
  70.                             editardatos($_POST['codigo'],$nombres,$apellidos,$direccion,$edad,$telefono,$email,$opcion,$nuevo_foto);
  71.                         }else{
  72.                             echo "<div align = 'center'>La imagen que intenta grabar, excede el peso requerido. El maximo de peso es 500KB.</div>";
  73.                             echo "<br /><br /><br />";
  74.                             echo "<div align = 'center'><a href='javascript:history.back()'>&lt;&lt; Clic aqui para regresar.</div></a>";
  75.                         }
  76.                        
  77.                     }else{
  78.                         echo "<div align = 'center'>La imagen que intenta grabar, debe ser de formato JPG.</div>";
  79.                         echo "<br />";
  80.                         echo "<div align = 'center'><a href='javascript:history.back()'>&lt;&lt; Clic aqui para regresar.</div></a>";
  81.                     } //cerramos el primer if.
  82.                                                            
  83.              //caso contrario, procedera a editar los datos sin la foto.   
  84.                                
  85.             }else{
  86.                         $nuevo_foto = $_POST['nombreFoto'];
  87.                         editardatos($_POST['codigo'],$nombres,$apellidos,$direccion,$edad,$telefono,$email,$opcion,$nuevo_foto);
  88.                        
  89.             } //cerramos el segundo if.                                        
  90.            
  91.  
  92.     } //cerramos el tercer if.
  93.    
  94. } //cerramos el if principal.

explicacion del archivo process.php.

1. primero condiciono si el nombre del archivo foto tiene el valor vacio.

2. luego extraigo la cadena de la variable $foto con la funcion explode y la almaceno en una variable $test almacenandola en un array. el proposito de esto es para hacer la validacion de la imagen si es un jpg, jpeg o gif.

3. despues hago una condicion almacenando la variable $test[1] en un array igualando al tipo de imagen si es jpg, jpeg o gif. si se cumple la primera condicion, sube la imagen, sino, mostrara una respuesta que el tipo de archivo no es permitido.

4. creo una variable $tamano para almacenar el nombre del archivo y crear otra variable $tamano_permitido y almacenar la cantidad de bytes al momento de subir la imagen.

Código PHP:
Ver original
  1. $tamano = $_FILES['foto']['size']; // Leemos el tamaño del fichero
  2. $tamano_max="1048576"; // Tamaño maximo permitido

5. despues, creo una condicion que me permita controlar el tamaño de la imagen. si se cumple la segunda condicion que el tamaño esta permitido, sube la imagen, caso contrario, mostrara una respuesta que el tamaño de la imagen no esta permitido.

6. como mencione antes que si el nombre del archivo foto foto tuviera el valor vacio, puede subir la imagen con los datos, caso contrario solo subira los datos sin la imagen.

Nota. olvide mencionar que deben crear una carpeta para que puedan subir las fotos. en este caso se llamara fotos.

Última edición por esaenz22; 28/02/2010 a las 17:26 Razón: correccion.
  #3 (permalink)  
Antiguo 16/02/2010, 10:42
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: [APORTE] mantenimiento de datos con su respectiva imagen si que esta se pi

continuacion con el aporte parte III.

ahora creamos un formulario para mostrar los datos con su imagen y despues editarlo.

Código PHP:
Ver original
  1. <?php
  2.  
  3. include("includes/Conexion.class.php");
  4. include("includes/config.inc.php");
  5.  
  6. $cn= new Conexion(); //instanciamos la clase.
  7. $cn->conectarse(); //creamos el objeto conectarse().
  8.  
  9. if(isset($_GET['id'])){ //preguntamos si la variable id esta definida.
  10.     $id = $_GET['id'];
  11.     $sql_datos  = "SELECT * FROM datos WHERE idagenda = '$id'";
  12.     $rpta_datos = $cn->query($sql_datos) or die(mysql_error());
  13.     $fila_datos = $cn->fetch_array($rpta_datos);
  14. }
  15.  
  16. ?>
  17.  
  18. <form id="form1" name="form1" method="post" enctype="multipart/form-data" action="process.php">
  19.   <input type = "hidden" name = "editar" id = "editar" value = "1" />
  20.   <input type = "hidden" name = "codigo" id = "codigo" value = "<?=$_GET['id']; ?>" />
  21.   <input type="hidden" name="FotoHdd" id="FotoHdd" value="<?php echo $_GET['FotoHdd'];?>" >
  22.   <input name="nombreFoto" type="hidden" value="<?php echo $fila_datos['foto'];?>" />
  23.   <table width="523" border="0" cellpadding="2" cellspacing="0">
  24.     <tr>
  25.       <td width="172"><div align="right">Nombres</div></td>
  26.       <td colspan="2"><input name="nombres" type="text" id="nombres" size="40" value = "<?php echo $fila_datos['nombres']; ?>" /></td>
  27.     </tr>
  28.     <tr>
  29.       <td><div align="right">Apellidos</div></td>
  30.       <td colspan="2"><input name="apellidos" type="text" id="apellidos" size="40" value = "<?php echo $fila_datos['apellidos']; ?>" /></td>
  31.     </tr>
  32.     <tr>
  33.       <td><div align="right">Direccion</div></td>
  34.       <td colspan="2"><input name="direccion" type="text" id="direccion" size="40" value = "<?php echo $fila_datos['direccion']; ?>" /></td>
  35.     </tr>
  36.     <tr>
  37.       <td><div align="right">Edad</div></td>
  38.       <td colspan="2"><input name="edad" type="text" id="edad" size="10" value = "<?php echo $fila_datos['edad']; ?>" /></td>
  39.     </tr>
  40.     <tr>
  41.       <td><div align="right">Telefono</div></td>
  42.       <td colspan="2"><input name="telefono" type="text" id="telefono" size="20" value = "<?php echo $fila_datos['telefono']; ?>" /></td>
  43.     </tr>
  44.     <tr>
  45.       <td><div align="right">E-mail</div></td>
  46.       <td colspan="2"><input name="email" type="text" id="email" size="40" value = "<?php echo $fila_datos['email']; ?>" /></td>
  47.     </tr>
  48.     <tr>
  49.       <td><div align="right">Sexo</div></td>
  50.       <td colspan="2">
  51.       <input type="radio" name="opcion" id="radio" value="M"
  52.           <?php
  53.                 if($fila_datos['sexo']=='M'){
  54.                     echo "checked='checked'";
  55.                 }
  56.           ?>      
  57.       />
  58.         M
  59.         <input type="radio" name="opcion" id="radio2" value="F"
  60.           <?php
  61.                 if($fila_datos['sexo']=='F'){
  62.                     echo "checked='checked'";
  63.                 }
  64.           ?>        
  65.         />
  66.         F</td>
  67.     </tr>
  68.     <tr>
  69.       <td>&nbsp;</td>
  70.       <td colspan="2"><img src="fotos/<?php echo $fila_datos['foto']; ?>" width="100" /></td>
  71.     </tr>
  72.     <tr>
  73.       <td><div align="right">Foto</div></td>
  74.       <td colspan="2"><input type="file" name="foto" id="foto" /></td>
  75.     </tr>
  76.     <tr>
  77.       <td>&nbsp;</td>
  78.       <td colspan="2">&nbsp;</td>
  79.     </tr>
  80.     <tr>
  81.       <td>&nbsp;</td>
  82.       <td width="148"><div align="center">
  83.           <input type="submit" value="Guardar" />
  84.         </div></td>
  85.       <td width="191"><div align="center">
  86.           <input type="button" value="Cancelar" onClick="javascript:history.back(1);" />
  87.         </div></td>
  88.     </tr>
  89.   </table>
  90. </form>

se preguntaran porque coloque 3 campos hidden en el formulario editar.

primero. coloque el campo oculto de nombre codigo colocandole como valor el nombre del get id. se hizo eso porque al momento de editar el dato, debe capturar el nombre del campo oculto para identificar que id de registro pertence. ya que ni no hago esto, no podra editar los datos.

segundo. coloque un campo oculto llamado editar poniendole como valor 1. cree ese campo porque como estoy haciendo en un solo archivo para agregar y editar datos, le coloco una condicion primero que si no esta definida la variable editar, es decir, que si esta no existe, puede hacer el insert, pero en el caso de editar, si la variable editar esta definida y tiene como valor 1, procedera a hacer el update.

tercero. coloque otro campo oculto llamado nombreFoto que le puse como valor el campo de la tabla llamada foto. lo hice con la intension de que si por a o b edite los datos sin cambiar la imagen, la imagen pueda mantenerse sin perderse.

Código PHP:
Ver original
  1. if($_FILES['foto']['size'] != '0' ){ //preguntamos si el tamaño del archivo es diferente a 0, que edite los datos con la imagen.
  2.  
  3. // la funcion move_uploaded_file() con el update
  4.  
  5. }else{ //caso contrario, procedera a editar los datos sin la foto.
  6.  
  7. //$foto = $_POST['nombreFoto'];
  8.  
  9. //el sql del update.
  10.  
  11. }

pero para no complicarse tanto, pueden crear 2 archivos para que uno agregue y el otro edite los datos.

por ultimo, si deseamos borrar la foto, llamaremos a la funcion borrardatos pasandole como parametro la variable $cod.

Código PHP:
Ver original
  1. function borrardatos($cod){
  2.     global $cn;
  3.     $eliimage = "select * from datos where idagenda = '$cod'";
  4.     $rowimages = mysql_query($eliimage) or die(mysql_error());
  5.     $rs_image = mysql_fetch_array($rowimages);
  6.    
  7.     $foto = $rs_image['foto'];
  8.     if($foto!=""){ //preguntamos si la foto es diferente a vacio, que borre la imagen.
  9.         @unlink("fotos/$foto");
  10.     }
  11.     $sql_del = "delete from datos where idagenda = '$cod'";
  12.     $cn->query($sql_del) or die(mysql_error());
  13.    
  14.     header("Location:index.php");
  15. }

el procedimiento es el siguiente:

mostramos la tabla datos preguntando por el id de la tabla.

creamos una variable $foto y la almacenamos en un fetch_array().

despues preguntamos que si la variable $foto es diferente a vacio, llamo a la funcion unlink() dandole como parametro la ruta donde esta almacenada la foto, es decir la carpeta con el nombre de la foto de la base de datos.

luego de eso creamos un archivo eliminar.php llamando la funcion creada para borrar los datos.

eliminar.php

Código PHP:
Ver original
  1. include("includes/Conexion.class.php");
  2. include("includes/config.inc.php");
  3. include("funciones.php");
  4.  
  5. $cn= new Conexion(); //instanciamos la clase Conexion().
  6. $cn->conectarse(); creamos el objeto conectarse().
  7.  
  8. if(isset($_GET['cod'])){ //preguntamos si la variable cod esta definida.
  9.     borrardatos($_GET['cod']);
  10. }

bueno eso a sido todo de mi aporte .

cualquier consulta o pregunta acerca del tema, me la hacen saber.

si me equivoque en algo de mi aporte, con gusto recibire sugerencias.

saludos.

Última edición por esaenz22; 16/02/2010 a las 10:47 Razón: correcion.
  #4 (permalink)  
Antiguo 16/02/2010, 10:50
 
Fecha de Ingreso: enero-2009
Mensajes: 434
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: [APORTE] mantenimiento de datos con su respectiva imagen si que esta se pi

Si al editar el usuario te machaca la foto, es tan facil como hacer :

Código PHP:
if($_FILES['imagen']['tmp_name']==''){
        
$url $fila1['Imagen'];
}else{
    
    
move_uploaded_file($_FILES['imagen']['tmp_name'],'../images/'.$_FILES['imagen']['name']);

    
$url basename($_FILES['imagen']['name']);


Con eso le decimos que si no se ha subido ninguna imagen, mantenga la que teniamos en la base de datos
  #5 (permalink)  
Antiguo 16/02/2010, 10:58
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: [APORTE] mantenimiento de datos con su respectiva imagen si que esta se pi

gracias por la respuesta esunestudio. hay varias maneras de como hacerlo, pero el aporte que hice fue de una manera simple para que se entienda.

de todas maneras, tomare en cuenta tu sugerencia.

pero el aporte que hice, esta bien redactado ?.

saludos.
  #6 (permalink)  
Antiguo 16/02/2010, 13:15
 
Fecha de Ingreso: enero-2007
Mensajes: 35
Antigüedad: 17 años, 10 meses
Puntos: 2
Respuesta: [APORTE] mantenimiento de datos con su respectiva imagen si que esta se pi

Se agradece estupendo aporte.. muchas gracias.. lo pond´re en practica...
  #7 (permalink)  
Antiguo 16/02/2010, 13:49
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: [APORTE] mantenimiento de datos con su respectiva imagen si que esta se pi

si en caso mas de un registro tiene el archivo de foto1.jpg tres registros con la misma foto. no es mejor que la imagen a subir al servidor sea de esta forma, 1234foto1.jpg ó blablablafoto1.jpg
  #8 (permalink)  
Antiguo 16/02/2010, 22:00
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: [APORTE] mantenimiento de datos con su respectiva imagen si que esta se pi

gracias por sus respuestas. si en caso hubiera mas registros con la misma imagen, lo primero que tendria que hacer es crear una cadena aleatoria, crear una variable y almacenarla para que subiera las fotos respectivamente.

seria de esta manera.

Código PHP:
Ver original
  1. if(!isset($_POST['editar'])){//preguntamos si el valor editar esta definida y si es diferente, que haga el insert.
  2.     //preguntamos si el archivo foto esta vacio
  3.     if(is_uploaded_file($_FILES['foto']['tmp_name'])) {
  4.    
  5.         /*prefijo de cadena*/
  6.         $str = "abcdefghijklmnopqrstuvwxyz1234567890";
  7.         $cad = "";
  8.         for($i=0;$i<12;$i++) {
  9.             $cad .= substr($str,rand(0,36),1);
  10.         }      
  11.    
  12.         #imagen del dato.
  13.         $foto       = $_FILES['foto']['name'];
  14.         $nuevo_foto = str_replace(' ','_',$foto);
  15.         $test       = explode(".",$foto);
  16.        
  17.         $path = "fotos/";
  18.        
  19.         if(strtoupper($test[1])=="JPG" || strtoupper($test[1])=="JPEG")
  20.         {
  21.             $tamano = $_FILES['foto']['size']; // Leemos el tamaño del fichero
  22.             $tamano_max="1048576"; // Tamaño maximo permitido
  23.            
  24.             if($tamano <= $tamano_max){ // Comprovamos el tamaño
  25.                 $nueva_imagen_aleatoria = $cad.'.'.$test[1]; //creamos una variable para almacenar la cadena aleatoria concatenandola con la variable $test[1].                    
  26.                 move_uploaded_file($_FILES['foto']['tmp_name'],$path.$nueva_imagen_aleatoria);
  27.                 agregardatos($nombres,$apellidos,$direccion,$edad,$telefono,$email,$opcion,$nueva_imagen_aleatoria);
  28.             }else{
  29.                 echo "<div align = 'center'>La imagen que intenta grabar, excede el peso requerido. El maximo de peso es 500KB.</div>";
  30.                 echo "<br /><br /><br />";
  31.                 echo "<div align = 'center'><a href='javascript:history.back()'>&lt;&lt; Clic aqui para regresar.</div></a>";
  32.             } //cerramos el primer if.
  33.            
  34.         }else{
  35.             echo "<div align = 'center'>La imagen que intenta grabar, debe ser de formato JPG.</div>";
  36.             echo "<br />";
  37.             echo "<div align = 'center'><a href='javascript:history.back()'>&lt;&lt; Clic aqui para regresar.</div></a>";
  38.         } //cerramos el segundo if.
  39.    
  40.     //Si no hay imagen para agregar en la agenda, procederemos a agregar los datos sin la imagen.
  41.     }else{
  42.         agregardatos($nombres,$apellidos,$direccion,$edad,$telefono,$email,$opcion,$nueva_imagen_aleatoria);
  43.        
  44.     } //cerramos el tercer if.
  45.    
  46. } //cerramos el if principal.
  47.  
  48. if(isset($_POST['editar'])){ //preguntamos si el valor editar esta definida.
  49.     if($_POST['editar']=='1'){ //preguntamos si el valor editar es igual a 1.
  50.    
  51.             #editamos la foto del producto.
  52.             if($_FILES['foto']['size'] != '0' ){ //preguntamos si el tamaño del archivo es diferente a 0, que edite los datos con la imagen.          
  53.                
  54.                 /*prefijo de cadena*/
  55.                 $str = "abcdefghijklmnopqrstuvwxyz1234567890";
  56.                 $cad = "";
  57.                 for($i=0;$i<12;$i++) {
  58.                     $cad .= substr($str,rand(0,36),1);
  59.                 }                  
  60.                
  61.                 $foto = $_FILES['foto']['name'];
  62.                 $nuevo_foto = str_replace(' ','_',$foto);
  63.                 $test = explode(".",$foto);
  64.                
  65.                 $path = "fotos/";
  66.                
  67.                     if(strtoupper($test[1])=="JPG" || strtoupper($test[1])=="JPEG"){
  68.                         $tamano = $_FILES['foto']['size']; // Leemos el tamaño del fichero
  69.                         $tamano_max="1048576"; // Tamaño maximo permitido
  70.                         if($tamano <= $tamano_max){ // Comprovamos el tamaño
  71.                             $nueva_imagen_aleatoria = $cad.'.'.$test[1]; //creamos una variable para almacenar la cadena aleatoria concatenandola con la variable $test[1].                    
  72.                             move_uploaded_file($_FILES['foto']['tmp_name'],$path.$nueva_imagen_aleatoria); 
  73.                             editardatos($_POST['codigo'],$nombres,$apellidos,$direccion,$edad,$telefono,$email,$opcion,$nueva_imagen_aleatoria);
  74.                         }else{
  75.                             echo "<div align = 'center'>La imagen que intenta grabar, excede el peso requerido. El maximo de peso es 500KB.</div>";
  76.                             echo "<br /><br /><br />";
  77.                             echo "<div align = 'center'><a href='javascript:history.back()'>&lt;&lt; Clic aqui para regresar.</div></a>";
  78.                         }
  79.                        
  80.                     }else{
  81.                         echo "<div align = 'center'>La imagen que intenta grabar, debe ser de formato JPG.</div>";
  82.                         echo "<br />";
  83.                         echo "<div align = 'center'><a href='javascript:history.back()'>&lt;&lt; Clic aqui para regresar.</div></a>";
  84.                     } //cerramos el primer if.
  85.                                                            
  86.              //caso contrario, procedera a editar los datos sin la foto.   
  87.                                
  88.             }else{
  89.                         $nueva_imagen_aleatoria = $_POST['nombreFoto'];
  90.                         editardatos($_POST['codigo'],$nombres,$apellidos,$direccion,$edad,$telefono,$email,$opcion,$nueva_imagen_aleatoria);
  91.                        
  92.             } //cerramos el segundo if.                                        
  93.            
  94.  
  95.     } //cerramos el tercer if.
  96.    
  97. } //cerramos el if principal.

esa seria la solucion para el problema.

Nota. si por alguna razon desean probar mi aporte en su hosting, deben crear la carpeta fotos y darle permisos 0777.

saludos.

Última edición por esaenz22; 17/02/2010 a las 16:36 Razón: correccion.
  #9 (permalink)  
Antiguo 18/02/2010, 07:39
 
Fecha de Ingreso: enero-2007
Mensajes: 35
Antigüedad: 17 años, 10 meses
Puntos: 2
Respuesta: [APORTE] mantenimiento de datos con su respectiva imagen si que esta se pi

Hola consulta, que pasa si tengo 3 cambios de imagenes diferentes... obvio en tres campos diferentes en la base de datos.
  #10 (permalink)  
Antiguo 18/02/2010, 10:35
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: [APORTE] mantenimiento de datos con su respectiva imagen si que esta se pi

te envie un MP respecto al tema que consultaste.

saludos.

Última edición por esaenz22; 23/02/2010 a las 17:21 Razón: correccion.
  #11 (permalink)  
Antiguo 25/02/2010, 21:12
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: [APORTE] mantenimiento de datos con su respectiva imagen si que esta se pi

Será posible que el aporte se pueda descargar?? desde algun link??
  #12 (permalink)  
Antiguo 26/02/2010, 10:14
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: [APORTE] mantenimiento de datos con su respectiva imagen si que esta se pi

si eso pensaba hacer. gracias por la sugerencia.

colocare 2 descargas. la primera es que la conexion esta hecha con clases y la segunda es con una conexion simple sin clases.

http://rapidshare.com/files/356213615/aporte.rar.html

http://rapidshare.com/files/35621456...ases_.rar.html

Edito.

si tienen problemas para descargarlo por rapidshare, aqui les dejo otro enlace para que lo descarguen.

aporte.rar

aporte (sin clases).rar

cualquier consulta sobre el codigo, me lo dicen.

saludos.

Última edición por esaenz22; 02/03/2010 a las 18:05 Razón: correccion.
  #13 (permalink)  
Antiguo 26/02/2010, 13:19
Avatar de TheoriaX  
Fecha de Ingreso: agosto-2009
Ubicación: Hermosillo, Sonora
Mensajes: 217
Antigüedad: 15 años, 3 meses
Puntos: 5
Respuesta: [APORTE] mantenimiento de datos con su respectiva imagen si que esta se pi

muy buen aporte...
__________________
Desarrollador .Net y Php
MCTS Framework 2.0:Windows Applications
Microsoft Certificated Profesional
  #14 (permalink)  
Antiguo 26/02/2010, 13:27
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
creo k m aporte no dio resultados.

hice mi esfuerzo para que los usuarios lo vieran y lo entiendan.

gracias.

saludos.

Última edición por esaenz22; 10/03/2010 a las 21:29 Razón: correccion.
  #15 (permalink)  
Antiguo 15/12/2010, 23:04
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: [APORTE] mantenimiento de imagenes en php y mysql

Cita:
Iniciado por esaenz22 Ver Mensaje
creo k m aporte no dio resultados.

hice mi esfuerzo para que los usuarios lo vieran y lo entiendan.

gracias.

saludos.
Hola Esaenz22

Despues de mucho tiempo que entro y entre a ver si se puede descargar y los enlaces estan rotos
  #16 (permalink)  
Antiguo 17/12/2010, 08:19
(Desactivado)
 
Fecha de Ingreso: abril-2008
Mensajes: 787
Antigüedad: 16 años, 7 meses
Puntos: 7
Respuesta: [APORTE] mantenimiento de imagenes en php y mysql

gracias por la respuesta pilucho. voy a subir de nuevo los ejemplos y colocar los enlaces para que los puedas descargar.

saludos.
  #17 (permalink)  
Antiguo 27/03/2011, 23:29
 
Fecha de Ingreso: febrero-2011
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: [APORTE] mantenimiento de imagenes en php y mysql

No se si pudieras subir denuevo los archivos de conexion si clases xq los enlaces ya no son validos.. o si me pudieras enviar ese mantenimiento gracias

Etiquetas: imagenes, mantenimiento, mysql, aportes
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 3 personas




La zona horaria es GMT -6. Ahora son las 01:13.