Update photos in php database

Asked

Viewed 227 times

0

Good afternoon, I’m having a problem saving the image in the database. It turns out that the image I update goes to the folder where it should, but in the database neither saves her name nor the path, follows the codes below

public  function update()
    {
        $sql = new Sql();

        $results = $sql->select("CALL sp_products_update (:CodProduto, :NomeProduto, :ValorProduto, :MargemLucro, :ValorVendaProduto, :QntProduto, :ImagemProduto, :QntParcelas, :ValorParcela, :Descricao, :Categoria)", array(
            ":CodProduto"=>$this->getCodProduto(),
            ":NomeProduto"=>$this->getNomeProduto(),
            ":ValorProduto"=>$this->getValorProduto(),
            ":MargemLucro"=>$this->getMargemLucro(),
            ":ValorVendaProduto"=>$this->getValorVendaProduto(),
            ":QntProduto"=>$this->getQntProduto(),
            ":ImagemProduto"=>$this->getImagemProduto(),
            ":QntParcelas"=>$this->getQntParcelas(),
            ":ValorParcela"=>$this->getValorParcela(),
            ":Descricao"=>$this->getDescricao(),
            ":Categoria"=>$this->getCategoria()
        ));

        $this->setData($results[0]);
}

method to check if the photo exists

//checar a foto
    public function checkPhotos()
    {
        if (file_exists(
            $_SERVER["DOCUMENT_ROOT"] . DIRECTORY_SEPARATOR . 
            "res" . DIRECTORY_SEPARATOR .
            "site" . DIRECTORY_SEPARATOR . 
            "img" .DIRECTORY_SEPARATOR .
            "products" . DIRECTORY_SEPARATOR .
            $this->getCodProduto() . ".jpg"))
            {
                $url = "/res/site/img/products/" . $this->getCodProduto() . ".jpg";
            } else{
                //RETORNAR FOTO PADRAO
                $url =  "/res/site/img/padrao.jpg";
            }

            return $this->setImagemProduto($url);
    }

and method to save the photo

//METODO PARA SALVAR A FOTO
    public function setPhoto($file)
    {   
        //detectar o tipo de extensao do arquivo
        $extension = explode('.', $file["name"]);
        $extension = end($extension);

        switch($extension){
            case "jpg":
            case "jpeg":
                $image = imagecreatefromjpeg($file["tmp_name"]);
            break;

            case "gif":
                $image = imagecreatefromgif($file["tmp_name"]);
            break;

            case "png":
                $image = imagecreatefrompng($file["tmp_name"]);
            break;
        }

        $dist = $_SERVER["DOCUMENT_ROOT"] . DIRECTORY_SEPARATOR . 
        "res" . DIRECTORY_SEPARATOR .
        "site" . DIRECTORY_SEPARATOR . 
        "img" .DIRECTORY_SEPARATOR .
        "products" . DIRECTORY_SEPARATOR .
        $this->getCodProduto() . ".jpg";

        imagejpeg($image, $dist);

        imagedestroy($image);

        $this->checkPhotos();

    }

follows the html input file

<label for="file">Foto</label>
                <input type="file" class="form-control" id="file" name="ImagemProduto">

Follow the Precedent

CREATE PROCEDURE sp_products_save (
pnomeproduto VARCHAR(100),
pvalorproduto decimal(10,2),
pmargemlucro decimal(10,2),
pvalorvenda decimal(10,2),
pquantidade INT,
pcodfornecedor INT,

pqntparcelas INT,
pvalorparcela DECIMAL(10,2),
pdescricao VARCHAR(255),
pcategoria VARCHAR(25)

) BEGIN

declare vcodproduto INT;

INSERT INTO produto (NomeProduto,ValorProduto,MargemLucro,
ValorVendaProduto,QntProduto,CodFornecedor,QntParcelas,ValorParcela,Descricao,Categoria)
VALUES (pnomeproduto, pvalorproduto,pmargemlucro,pvalorvenda,pquantidade,pcodfornecedor,
pqntparcelas,pvalorparcela,pdescricao,pcategoria);

SET vcodproduto = LAST_INSERT_ID();

SELECT * FROM produto WHERE CodProduto = vcodproduto;

END $$

and in the database the field Imagemproduct this scan

  • You need to send more codes. If the problem is in saving in the database, it is necessary to post the query of your code.

  • I put the file, the query is in the first code.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.