Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá galera, baixei o script de upload de imagens do Fabyo,
o script é muito bom, mas estou com um probleminha para implementa-lo,
eu tenho a opcao de novo item e a opcao de alterar,
>
if($acao == "gravarincluir"){
mysql_query("INSERT into portfolio values(null, '$titulo', '$sub_titulo', '$desenvolvimento', '$link', '$nome_thumb', '$nome_foto')");
}
if($acao == "gravaralterar"){
mysql_query("UPDATE portfolio set por_titulo = '$titulo', por_sub_titulo = '$sub_titulo', por_link = '$link', por_desenvolvimento = '$desenvolvimento', por_thumb = '$nome_thumb', por_foto = '$nome_foto' where por_codigo = '$id' ");
}
Mas, toda vez que eu for alterar, eu tenho que inserir a imagem denovo, não teria alguma maneira de se o campo imagem estiver vazio ele apenas não fazer o insert no bd? ja tentei fazer isso sim, mas em algum lugar no script do fabyo ele faz a verificação do form e ainda não descobri qual é... acho que é por ai:
>
function Verifica_Upload()
{
$this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;
if(!is_uploaded_file($this->arquivo['tmp_name'])) {
return false;
}
$get = getimagesize($this->arquivo['tmp_name']);
if($get["mime"] != "image/jpeg")
{
echo "<span style=\"color: white; border: solid 1px; background: red;\">Esse foto nao é uma imagem valida</span>";
exit;
}
return true;
}
function Envia_Arquivo()
{
if($this->Verifica_Upload()) {
$this->gera_fotos();
return true;
} else {
echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$this->arquivo['error']]."</span>";
}
}
ai o link do tópico dele
http://forum.imasters.com.br/index.php?showtopic=164120
Agradeço desde já!
Como eu apago ela do diretorio onde ela está pelo php? :S
função
unlink();
Valeu Alaerte vou tentar aqui ;)
ok, para mais informações acesse o manual:
http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://www.php.net/unlink
bah não concegui fazer.. tem como explicar um pouco melhor?
o problema está no passo 3, não concigo fazer gravar a imagem novamente sem fazer upload, eu teria que pegar o nome no banco, deletar do diretorio, fazer a variavel receber o nome que estava no banco e inserir? ..
:(
Tentei fazer tb if($acao == "gravaralterar") na function tirando a verificacao se existe imagem mas tb não deu :(
cole uma parte do código ai.
>
function Verifica_Upload()
{
$this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;
if(!is_uploaded_file($this->arquivo['tmp_name'])) {
return false;
}
$get = getimagesize($this->arquivo['tmp_name']);
if($get["mime"] != "image/jpeg")
{
echo "<span style=\"color: white; border: solid 1px; background: red;\">Esse foto nao é uma imagem valida</span>";
exit;
}
return true;
}
function Envia_Arquivo()
{
if($this->Verifica_Upload()) {
$this->gera_fotos();
return true;
} else {
echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$this->arquivo['error']]."</span>";
}
}
>
/---------------------------GRAVAR NO BD!------------------------/
$titulo = $_POST['titulo'];
$sub_titulo = $_POST['sub_titulo'];
$desenvolvimento = $_POST['desenvolvimento'];
$link = $_POST['link'];
include("conn.php");
$acao = $_GET['acao'];
$id = $_GET['id'];
if($acao == "gravarincluir"){
mysql_query("INSERT into portfolio values(null, '$titulo', '$sub_titulo', '$desenvolvimento', '$link', '$nome_thumb', '$nome_foto')");
}
if($acao == "gravaralterar"){
mysql_query("UPDATE portfolio set por_titulo = '$titulo', por_sub_titulo = '$sub_titulo', por_link = '$link', por_desenvolvimento = '$desenvolvimento', por_thumb = '$nome_thumb', por_foto = '$nome_foto' where por_codigo = '$id' ");
}ngm conceguiu achar uma solução? :(
não estou vendo a parte do unlink ai ? tentou fazer onde ?
mas eu não tenho que fazer o novo upload antes de
deletar a imagem?
Alguém poderia me explicar essa parte do código?
>
function gera_fotos()
{
$diretorio = "../css/imagens/fotos_sites/";
if(!file_exists($diretorio))
{
mkdir($diretorio);
}
$nome_foto = "imagem_".time().".jpg";
$nome_thumb = "thumb_".time().".jpg";
//determino uma resolução maxima e se a imagem for maior ela sera reduzida
reduz_imagem($this->arquivo['tmp_name'], 800, 700, $diretorio.$nome_foto);
//passo o tamanho da thumbnail
reduz_imagem($this->arquivo['tmp_name'], 160, 150, $diretorio.$nome_thumb);
echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$this->arquivo['error']]."</span>";
Não entendi muito bem as últimas linhas
Obrigado.
Stone.
Se o campo no bd estiver fazio você simplesmente vai enviar a imagem como se estiver alterando sem problemas
Faça um if caso exista a imagem:
1) Verificar se existe imagem
2) Pegar no nome da imagem e apagar ela do diretorio onde esta
3) Upload da nova imagem
4) Update na tabela com o nome da nova imagem
compreendeu?
No caso de que ja exita o registro na tabela nao faz diferença INSERT ou UPDATE a informação vai funcionar da mesma forma. ok