Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mehow

PHP OO - atualizar upload de imagem

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.