PHP - Mantener imagen original si no se modifica en la base de datos

 
Vista:

Mantener imagen original si no se modifica en la base de datos

Publicado por Diego (2 intervenciones) el 09/02/2020 04:09:29
Hola, estoy trabajando en un proyecto en el que hago un CRUD de datos, tengo un problema con las imágenes, me inserta normal en la base de datos sin embargo en el formulario de modificación cuando no modifico la imagen no se guarda la primera que estaba almacenada, se pierde, como hago para mantener la misma imagen si no se modifica? muchas gracias de antemano. (aclarar que siempre me aparece el mensaje de modificación exitosa)

aquí recibo la modificación:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
case 'Modificar':
    if (isset($_FILES['img']['name'])) {
        $dir='img/'.$_FILES['img']['name'];
        move_uploaded_file($_FILES['img']['tmp_name'],$dir);
        $Repuesto = new Repuesto($_POST['Name'],$_POST['Desc'],$_POST['Fab'],$_POST['Nro'],$_POST['Price'],$_POST['cant'],$dir,$_POST['id']);
    }
    else{
        $Repuesto = new Repuesto($_POST['Name'],$_POST['Desc'],$_POST['Fab'],$_POST['Nro'],$_POST['Price'],$_POST['cant'],$dir,$_POST['id']);
    }
    $r=$Repuesto->modificacion();
        if ($r) {
            echo '<p><div class="alert alert-success" role="alert">LOS DATOS SE MODIFICARON CORRECTAMENTE</div>';
        }
        else {
            echo '<p><div class="alert alert-danger" role="alert">NO SE MODIFICARON LOS DATOS</div>';
        }
    break;

Luego lo mando a la clase donde esta el método que es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public function modificacion(){
    $con=Conexion::conectar();
    $sql="UPDATE repuesto SET name=:name, desc=:desc, Fabr=:Fabr, Nro=:Nro, price=:price, cant=:cant, img=:img WHERE id=:id";
    $sentencia=$con->prepare($sql);
    $sentencia->bindParam(':id',$this->id);
    $sentencia->bindParam(':name',$this->name);
    $sentencia->bindParam(':desc',$this->desc);
    $sentencia->bindParam(':Fabr',$this->Fabr);
    $sentencia->bindParam(':Nro',$this->Nro);
    $sentencia->bindParam(':price',$this->price);
    $sentencia->bindParam(':cant',$this->cant);
    $sentencia->bindParam(':img',$this->img);
    return $sentencia->execute();
}

este es el constructor:
1
2
3
4
5
6
7
8
9
10
function __construct($name,$description,$Fabricante,$NroFabr,$price,$cant,$img,$id=null){
    $this->id=$id;
    $this->name=$name;
    $this->desc=$desc;
    $this->Fabr=$Fabr;
    $this->Nro=$Nro;
    $this->price=$price;
    $this->cant=$cant;
    $this->img=$img;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Julio
Val: 1.400
Plata
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Mantener imagen original si no se modifica en la base de datos

Publicado por Julio (430 intervenciones) el 09/02/2020 09:22:43
Hola.

No entiendo exactamente qué te sucede. ¿Hablas de que cuando modificas la imagen, la que había se pierde? ¿Puede ser que estés sobreescribiéndola?

P.D.: Tus líneas donde haces new Repuesto son iguales tanto en el if como en el else y los datos que les llegan también. Puedes evitar duplicar esa línea y sacarla después del if y eliminar el else, te servirá igual y tienes una línea menos.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mantener imagen original si no se modifica en la base de datos

Publicado por Diego (2 intervenciones) el 10/02/2020 17:24:15
Hola, gracias por responder.
El problema es que cuando hago la modificación de datos la imagen se pierde en vez de mantenerse si no la modifico.
En el If intento controlar que si encuentra una imagen nueva la sobreescriba y si no que mantenga la que había pero no me funciona
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 1.400
Plata
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Mantener imagen original si no se modifica en la base de datos

Publicado por Julio (430 intervenciones) el 10/02/2020 17:56:37
Hola.

Pero fíjate que en tu función modificar() estás sobreescribiendo siempre la imagen, haya una nueva o no. El if externo no te hará gran cosa si en esta función siempre asignas una nueva imagen, la haya o no.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar