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.
– Andrei Coelho
I put the file, the query is in the first code.
– Niko