Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
estou iniciando OOP agora, desenvolvi uma classe para upload de imagem, até aí ok....o problema que não estou conseguindo fazer ao atualizar um cadastro que já tenha imagem e eu não escolher outra imagem ele manter a antiga...
procedural eu só fazia uma verificação que quando o campo de imagem fosse vazio, eu pegava o nome da foto antiga por um input hidden e só dava um update, então matinha a foto... agora OOP eu não estou conseguindo, a variavel fica sem valor na hora do update....
<?php
class Upload {
var $tipo;
var $tamanho;
var $nome;
function enviaArquivo($arquivo,$diretorio){
if(isset($arquivo) && $arquivo['name']!=""){
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp|png)$", $arquivo["type"])){
echo '<script>alert("Somente imagens são aceitas!")</script>';
echo '<script>history.back()</script>';
exit;
}
else{
$nome_original = $arquivo['name'];
$tamanho = $arquivo['size'];
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);
$nome_arq = md5(uniqid(time())).'.'.$ext[1];
if(move_uploaded_file($arquivo['tmp_name'],$diretorio.$nome_arq)){
$this->nome = $nome_arq;
}
else
{
echo "Erro: não foi possível enviar o arquivo";
}
}
}
else{
$this->nome = "X";
}
}
}
?>
<?php
class updateUpload extends Upload{
var $foto_antiga;
function atualizaArquivo($arquivo,$diretorio){
if(!isset($arquivo) or $arquivo['name']!=""){
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp|png)$", $arquivo["type"])){
echo '<script>alert("Somente imagens são aceitas!")</script>';
echo '<script>history.back()</script>';
exit;
}
else{
$nome_original = $arquivo['name'];
$tamanho = $arquivo['size'];
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);
$nome_arq = md5(uniqid(time())).'.'.$ext[1];
if(move_uploaded_file($arquivo['tmp_name'],$diretorio.$nome_arq)){
$this->nome = $nome_arq;
}
else
{
echo "Erro: não foi possível enviar o arquivo";
}
}
}
else{
$this->nome = $this->foto_antiga;
}
}
}
?>
########################## ALTERAR ##########################
if(isset($xacao) && $xacao == "alterar") {
include("classe/db.php");
include("classe/upload.php");
$foto_antiga = $_POST['foto_antiga'];
$up->foto_antiga = $foto_antiga;
$up = new updateUpload();
$up->atualizaArquivo($_FILES['xfoto'],"../arquivos_noticia/");
$sql = new ConectaBD();
$sql->conecta();
$query = $sql->consulta("UPDATE eventos SET
titulo = '".$titulo."',
descricao = '".$desc."',
data = '".$data."',
data2 = '".$data2."',
site = '".$site."',
foto = '".$nome_arquivo."'
WHERE id_evento = '".$idevento."'") or die(mysql_error());
}putz! eu nem tinha reparado...
to tentando me adaptar e ir aprendendo POO... paradigma mto diferente...
mas gostaria de saber a maneira certa de fazer o upload, se alguem ai puder ajudar
Qual versão do PHP você está usando?
Você quer aprender OOP em PHP5, ou quer que suas classes funcionem com PHP4 também?
Se quiser PHP5, pode começar por aqui neste manual e conforme forem surgindo as dúvidas você pergunta. Ok?
Para atualizar os dados mantendo o arquivo atual, você não precisa
alterar o campo com o nome do arquivo (foto). Consequentemente não é necessário
usar a classe de upload.
A propósito, porque é que você está usando uma propriedade antes mesmo de criar a instancia?