entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

actualizar imagen con ruta php sobre este codigo ejemplo de internet

hola buenas tardes disculpen mis molestias necesito ayuda sobre este ejemplo de internet lo necesito pero cuando lo actualizo la imagen de registros por id, elimina la foto de la carpeta que esta me podria ayudar aqui pongo el codigo:

conexion.php

<?php
    $server="localhost";
    $username="root";
    $password="";
    $db='ejemploimagenes';
    $con=mysql_connect($server,$username,$password)or die("no se ha podido establecer la conexion");
    $sdb=mysql_select_db($db,$con)or die("la base de datos no existe");
?>

index.php

<?php 
    include "datos/conexion.php";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Productos</title>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <link rel="stylesheet" href="css/Estilos.css">
    <meta name="generator" content="Geany 1.22">
</head>
<body>
    <h1>Sube tus productos con imagenes a este servidor.</h1>
    <br>
<form action="Acciones/guardar.php" method="post" enctype="multipart/form-data">
<table>
    <TR>
        <td><label>Nombre:</label></td>
        <td><label><input type="text" name="Nombre"></label></td>
    </TR>
    <TR>
        <td><label>Precio:</label></td>
        <td><label><input type="text" name="Precio"> $</label></td>
    </TR>
</table>
    <input type="file" name="foto">
    <br>
    <input type="submit" value="Upload">
    </form>
<table border="2px">
    <tr>
        <td>ID</td>
        <td>Nombre</td>
        <td>Precio</td>
        <td>Imagen</td>
        <td>Acciones</td>
    </tr>
    <?php
        include 'Datos/conexion.php';
        $re=mysql_query("select * from productos")or die(mysql_error());
        while ($f=mysql_fetch_array($re)) {
    ?>
    <tr>
        <td><?php echo $f['idProducto'];?></td>
        <td><?php echo $f['Nombre'];?></td>
        <td><?php echo $f['Precio'];?></td>
        <td><?php echo "<img class=\"imagen\" src=\""."Imagenes/".$f['Imagen']."\">";?></td>
        <td><?php echo '<a href="Acciones/eliminar.php?eliminar='.$f['idProducto'].'">Eliminar producto</a>';?>
        <?php echo '<a href="editar.php?editar='.$f['idProducto'].'">Editar</a>';?></td>
    </tr>
    <?php
    }
    ?>
    </table>    
</body>
</html>

editar.php

<?php 
    include "datos/conexion.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Editar</title>
</head>
<body>
    <form action="Acciones/editar.php" method="POST" enctype="multipart/form-data">
    <table>
        <TR>
            <td><label>Nombre:</label></td>
            <?php
            $con=mysql_connect($server,$username,$password)or die("problemas al conectar al servidor");
            mysql_select_db($db,$con)or die("no existe la base de datos");
            $re = mysql_query("select Nombre,Precio from productos where idProducto = ".$_GET['editar'].";");
            while ($f=mysql_fetch_array($re)){
                ?>
            <td><label><input type="text" name="Nombre"<?php echo 'value="'.$f['Nombre'].'"';?> ></label></td>
        </TR>
        <TR>
            <td><label>Precio:</label></td>
            <td><label><input type="text" name="Precio" <?php echo 'value="'.$f['Precio'].'"';?>> $</label></td>
            <?php } ?>
            <input type="hidden" name="id" value=<?php echo '"'.$_GET['editar'].'"'; ?> >
        </TR>
    </table>
    <br>
    <input type="file" name="foto" id="foto">
    <br>
    <br>
    <input type="submit" value="Editar">
    </form>
</body>
</html>

editar.php

<?php
    include '../Datos/conexion.php';
    $con=mysql_connect($server,$username,$password)or die("problemas al conectar al servidor");
    mysql_select_db($db,$con)or die("no existe la base de datos");
    if ($_FILES['foto']['name']=="") {
        mysql_query("update productos set Nombre ='".$_POST['Nombre']."', Precio='".$_POST['Precio']."' where idProducto=".$_POST['id'].";");
    }
    else{
        $re = mysql_query("select Imagen from productos where".$_POST['id'].";");
        while ($f=mysql_fetch_array($re)) {
            unlink("../Imagenes/".$f['Imagen']);
        }
        $ruta = "../Imagenes/";
        opendir($ruta);
        $destino = $ruta.$_FILES['foto']['name'];
        copy($_FILES['foto']['tmp_name'],$destino);
        $nombre=$_FILES['foto']['name'];
        mysql_query("update productos set Nombre ='".$_POST['Nombre']."', Precio='".$_POST['Precio']."', Imagen ='".$nombre."' where idProducto=".$_POST['id'].";");
    }
    header("Location: ../");
?>

1 Respuesta

4votos

Leonardo-Tadei Puntos227320

Hola @numero2222,

el script editar.php borra la imagen, porque el ELSE del IF que pregunta si vino una imagen nueva tiene la ínea

unlink("../Imagenes/".$f['Imagen']);

que es lo que hace el borrado del archivo.

El script de ejemplo que estás usando, asume que si al editar un producto no viene una imagen nueva, entonces la que está debe ser borrada.

Si en cambio al editar subís una imagen nueva, se borra la vieja y se pasa a usar la nueva, lo cual es el comportamiento esperable.

No es que el código del ejemplo que estás usando funcione mal: es que no hace lo que vos querés, que posiblemente sea que al editar, si no va una imagen nueva, no se borre la existente.

Para eso basta con sacar la línea con el unlink(), pero esto implicaría que tenés que agregar algo al formulario de editar para que se pueda indicar que se quiere que el producto no tenga ningua imagen después de haber subido alguna.

Saludos cordiales!

1voto

numero2222 comentado

muchas gracias amigo si funciono muy bien eliminando esqa linea y me quedo asi el codigo y hace modificar las cosas bien deja muestro :

<?php
    include '../Datos/conexion.php';
    $con=mysql_connect($server,$username,$password)or die("problemas al conectar al servidor");
    mysql_select_db($db,$con)or die("no existe la base de datos");
    if ($_FILES['foto']['name']=="") {
        mysql_query("update productos set Nombre ='".$_POST['Nombre']."', Precio='".$_POST['Precio']."' where idProducto=".$_POST['id'].";");
    }
    else{
        $ruta = "../Imagenes/";
        opendir($ruta);
        $destino = $ruta.$_FILES['foto']['name'];
        copy($_FILES['foto']['tmp_name'],$destino);
        $nombre=$_FILES['foto']['name'];
        mysql_query("update productos set Nombre ='".$_POST['Nombre']."', Precio='".$_POST['Precio']."', Imagen ='".$nombre."' where idProducto=".$_POST['id'].";");
    }
    header("Location: ../");
?>

2votos

Leonardo-Tadei comentado

Me alegra que te haya servido.

De paso, borrá la línea

opendir($ruta);

del script de arriba, que no hace nada en ese código.

Saludos cordiales!

1voto

numero2222 comentado

muchas gracias amigo se lo grandesco y mucho y listo y funciono :)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta