删除客户端但不删除图像

时间:2018-04-17 03:35:08

标签: php mysql pdo

删除客户端后,除了存储在文件夹/ view / cliente / imagenes

中的图像外,其所有信息都将被删除

模型

<?php
    class cliente{
        private $pdo;
        public $id;
        public $res;
        public $resultado;
        public $row;
        public $dni;
        public $Nombre;
        public $Apellido;  
        public $Correo;
        public $Telefono;
        public $imagen;

        public function __CONSTRUCT(){
            try{
                $this->pdo = conectar();
            }
            catch(Exception $e){
                die($e->getMessage());
            }
        }
        public function Listar(){
            try{
                $result = array();
                $stm = $this->pdo->prepare("SELECT * FROM cliente");
                $stm->execute();
                return $stm->fetchAll(PDO::FETCH_OBJ);
            }
            catch(Exception $e){
                die($e->getMessage());
            }
        }
        public function Buscarme($Nombre){
            try{
                $stm = $this->pdo->prepare("SELECT * FROM cliente WHERE Nombre LIKE '%".$Nombre."%'");
                $stm -> execute();  
                $res = $stm->fetchAll(PDO::FETCH_ASSOC); 
                $this->resultado= array();
                $i=0;
                foreach($res as $row){
                    $this->resultado[$i]['id']          = $row['id'];
                    $this->resultado[$i]['dni']         = $row['dni'];
                    $this->resultado[$i]['Nombre']      = $row['Nombre'] ;
                    $this->resultado[$i]['Apellido']    = $row['Apellido'];
                    $this->resultado[$i]['Correo']      = $row['Correo'] ;
                    $this->resultado[$i]['Telefono']    = $row['Telefono'] ;
                    $this->resultado[$i]['Imagen']      = $row['Imagen'] ;
                    $i++;
                }
            }
            catch (Exception $ex) {
                die($e->getMessage());
            }
        }
        public function ListarApellido(){
            try{
                $result = array();
                $stm = $this->pdo->prepare("SELECT * FROM cliente WHERE Apellido = 'Ardila'");
                $stm->execute();
                return $stm->fetchAll(PDO::FETCH_OBJ);
            }
            catch(Exception $e){
                die($e->getMessage());
            }
        }
        public function ListarApellidoM(){
            try{
                $result = array();
                $stm = $this->pdo->prepare("SELECT * FROM cliente WHERE Apellido = 'Mateus'");
                $stm->execute();
                return $stm->fetchAll(PDO::FETCH_OBJ);
            }
            catch(Exception $e){
                die($e->getMessage());
            }
        }
        public function Obtener($id){
            try{
                $stm = $this->pdo->prepare("SELECT * FROM cliente WHERE id = ?");
                $stm->execute(array($id));
                return $stm->fetch(PDO::FETCH_OBJ);
            }
            catch (Exception $e){
                die($e->getMessage());
            }
        }
        public function Eliminar($id){
            try{
                $stm = $this->pdo->prepare("DELETE FROM cliente WHERE id = ?");
                $stm->execute(array($id));
            }
            catch (Exception $e){
                die($e->getMessage());
            }
        }
        public function Actualizar(cliente $data){
            try{
                $sql = "UPDATE cliente SET dni = ?, Nombre = ?, Apellido = ?, Correo = ?, Telefono = ?, Imagen = ? WHERE id = ?";
                $this->pdo->prepare($sql)->execute(array( $data->dni, $data->Nombre,$data->Apellido,$data->Correo,$data->telefono, $data->imagen, $data->id));
            }
            catch (Exception $e){
                die($e->getMessage());
            }
        }
        public function Registrar(cliente $data){
            try{
                $sql = "INSERT INTO cliente (dni,Nombre,Apellido,Correo,telefono,Imagen) VALUES (?, ?, ?, ?, ?, ?)";
                $this->pdo->prepare($sql)->execute(array($data->dni, $data->Nombre,$data->Apellido, $data->Correo, $data->telefono,$data->imagen));
            }
            catch (Exception $e){
                die($e->getMessage());
            }
        }
    }
?>

控制器

<?php
    include_once 'model/cliente.php';
    class clienteController {
        private $model;
        public $mensaje;
        public function __CONSTRUCT() {
            $this->model = new cliente();
        }
        public function Paginar() {
            require_once 'view/header.php';
            require_once 'view/cliente/cliente.php';
        }
        public function agregar(){
            $cliente = new cliente();
            if (isset($_REQUEST['id'])) {
                $cliente = $this->model->Obtener($_REQUEST['id']);
            }
            require_once 'view/header.php';
            require_once 'view/cliente/cliente-editar.php';
        }
        public function buscar() {
            require_once 'view/header.php';
            require_once 'view/cliente/cliente.php';
            $cliente = new cliente();
            if (isset($_POST['Nombre'])) {
                $cliente = $this->model->Buscarme($_POST['Nombre']);
            }
        }
        public function redireccionar() {
            require_once 'view/header.php';
            if ($_REQUEST['Nombre'] == "pablo") {
                require_once 'view/creditos/creditos.php';
            }
            if ($_REQUEST['Nombre'] == "ives") {
                require_once 'view/creditos/creditos2.php';
            }
        }
        public function listador() {
            require_once 'view/header.php';
            if ($_REQUEST['Nombre'] == "Ardila") {
                require_once 'view/cliente/apellidos/Ardila.php';
            }
            if ($_REQUEST['Nombre'] == "Mateus") {
                require_once 'view/cliente/apellidos/Mateus.php';
            }
        }
        public function Guardar() {
            require_once 'view/header.php';
            $cliente = new cliente();
            $tamaño=$_FILES['imagen']['size'];
            $tipo=$_FILES['imagen']['type'];
            if($tamaño <= 3000000){
                if($tipo=="image/jpeg"||$tipo=="image/jpg" || $tipo=="image/png" || $tipo=="image/gif"){
                    $ruta = "view/cliente/imagenes/";
                    opendir($ruta);
                    $destino = $ruta . $_FILES['imagen']['name'];
                    copy($_FILES['imagen']['tmp_name'], $destino);
                    $cliente->id = $_REQUEST['id'];
                    $cliente->dni = $_REQUEST['dni'];
                    $cliente->Nombre = $_REQUEST['Nombre'];
                    $cliente->Apellido = $_REQUEST['Apellido'];
                    $cliente->Correo = $_REQUEST['Correo'];
                    $cliente->telefono = $_REQUEST['telefono'];
                    $cliente->imagen = $_FILES['imagen']['name'];
                    if ($cliente->id > 0) {
                        $this->model->Actualizar($cliente);
                    } else {
                        $this->model->Registrar($cliente);
                    }
                    header('Location: index.php');
                }
                else{
                    $this->mensaje="FORMATO NO ADMITIDO";
                    require_once 'view/cliente/imagenes/error.php';
                }
            }
            else{
                $this->mensaje="TAMAÑO EXEDIDO";
                require_once 'view/cliente/imagenes/error.php';
            }
        }
        public function Eliminar() {
            $this->model->Eliminar($_REQUEST['id']);
            unlink($filename);
            header('Location: index.php');
        }
    }
?>

Eliminar方法获取id,删除客户端但不删除与该客户端关联的/ view / cliente / imagenes文件夹中的jpg文件。

创建客户端时,必须加载图像,只将图像名称存储在数据库中,图像存储在文件夹/ view / client / images

数据库客户

CREATE TABLE cliente (
    id int(11) NOT NULL,
    dni int(60) NOT NULL,
    Nombre varchar(50) NOT NULL DEFAULT '0',
    Apellido varchar(50) NOT NULL DEFAULT '0',
    Correo varchar(50) NOT NULL,
    Telefono varchar(60) NOT NULL,
    Imagen text COLLATE utf8_spanish_ci NOT NULL
);
ALTER TABLE cliente ADD PRIMARY KEY (`id`);
ALTER TABLE cliente MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1; 

1 个答案:

答案 0 :(得分:1)

我不知道保存图像的方式是什么,但它应该是这样的:

public function Eliminar($id)
{
    try {
                // Get image path
                $imgPath = $this->model->Obtener($id)['Imagen'];
                // Delete image from server
                unlink($imgPath);
                $stm = $this->pdo->prepare("DELETE FROM cliente WHERE id = ?");                   
                $stm->execute(array($id));
    } catch (Exception $e) 
    {
        die($e->getMessage());
    }
}