Mehow 1 Denunciar post Postado Abril 19, 2010 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()); } Compartilhar este post Link para o post Compartilhar em outros sites
Claudiobrother 2 Denunciar post Postado Abril 20, 2010 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? $foto_antiga = $_POST['foto_antiga']; $up->foto_antiga = $foto_antiga; //A próxima linha de código deveria estar acima dessa $up = new updateUpload(); $up->atualizaArquivo($_FILES['xfoto'],"../arquivos_noticia/"); Compartilhar este post Link para o post Compartilhar em outros sites
Mehow 1 Denunciar post Postado Abril 20, 2010 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 Compartilhar este post Link para o post Compartilhar em outros sites
Claudiobrother 2 Denunciar post Postado Abril 21, 2010 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? Compartilhar este post Link para o post Compartilhar em outros sites