tamires 0 Denunciar post Postado Julho 3, 2007 ola!tenho um formulario de atualizacao de cadastro. ele atualiza a imagem e/ou a legenda, você pode atualizar os dois ou só um dos dois itens.ele funciona, mas dá problema quando tento atualizar tudo menos a imagem...ele não está fazendo o upload da imagem.usei o seguinte no código: if(isset($_FILES["img_upload"])){//upload se mudar imagemif(isset($_FILES["img_upload"])){move_uploaded_file($_FILES['img_upload']['tmp_name'], '../imagens/' . $_FILES["img_upload"]["name"]);$imgcompleta = '../imagens/' . $_FILES["img_upload"]["name"];$imgquebrar = $_FILES["img_upload"]["name"];}//criar thumb//IMAGEM A SER ABERTA (800x640)$imagem = $imgcompleta;//DEFINE OS PARÂMETROS DA MINIATURA$largura = 60;$altura = 75;//NOME DO ARQUIVO DA MINIATURA$imagem_gerada = explode(".", $imgquebrar);$imagem_gerada = "../imagens/".$imagem_gerada[0]."_mini.jpg";//CRIA UMA NOVA IMAGEM$imagem_orig = imagecreatefromjpeg($imagem);//LARGURA$pontoX = imagesx($imagem_orig);//ALTURA$pontoY = imagesy($imagem_orig);//CRIA O THUMBNAIL$imagem_fin = imagecreatetruecolor($largura, $altura);//COPIA A IMAGEM ORIGINAL PARA DENTROimagecopyresampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY);//SALVA A IMAGEMimagejpeg($imagem_fin, $imagem_gerada, 100);//grava nome da thumb pro banco$nomethumb = $imagem_gerada;}else{//se não mudar a imagem$imgcompleta = $row_rs_editimg['imagem'];$nomethumb = $row_rs_editimg['thumb'];}esses dois itens $imgcompleta = $row_rs_editimg['imagem'];e $nomethumb = $row_rs_editimg['thumb'];estão vindo do recordset que busca qual cadastro está sendo editado. as váriaveis $imgcompleta e $nomethumb são as que contém as informações que serão gravadas no banco, se você atualizar a imagem ou não.os erros que aparecem são os seguintes:Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php on line 86Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: '../imagens/' is not a valid JPEG file in /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php on line 86Warning: imagesx(): supplied argument is not a valid Image resource in /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php on line 89Warning: imagesy(): supplied argument is not a valid Image resource in /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php on line 91Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php on line 97Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php:86) in /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php on line 140me parece que ele dá erro pq não usei as funções. como faço para concertar isso? acredito que a logica esteja certa...aguardo respostasgratatamires Compartilhar este post Link para o post Compartilhar em outros sites
guma 0 Denunciar post Postado Julho 4, 2007 Cara este erro pode ser os seguinte:1º Seu formulario não esta enviando o FILE corretamente.. 2º A extensão do arquivo não é JPGMas provavelmente seu Form não esta com este tipo de cryptografia = "multipart/form-data" ou a pasta onde voce esta querendo pegar a imagem é invalida..Qualquer coisa prende o grito ai..Abração Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Julho 4, 2007 a extensão do arquivo está como jpeg...tentei com uns três arquivos diferentes de imagem, deu na mesma. segue o código do form, não estou encontrando os problemas nele! ele já está com isso essa marcação da criptografia... <form action="<?php echo $editFormAction; ?>" method="POST" [b]enctype="multipart/form-data" [/b]name="editimg" id="editimg">imagem <br><input name="img_upload" id="img_upload" type="file" class="base_form" size="20"> <br>legenda_pt <br><textarea name="legenda_pt" cols="20" rows="5" class="base_form" id="legenda_pt"><? echo $row_rs_editimg['legenda_pt']?></textarea><br>legenda_in <textarea name="legenda_in" cols="20" rows="5" class="base_form" id="legenda_in"><? echo $row_rs_editimg['legenda_in']?></textarea><br> <input name="id_img" type="hidden" value="<? echo $row_rs_editimg['id_img']?>"> <input name="back" type="button" class="base_form" onClick="history.back();" value="voltar"> <input name="enviar" type="submit" value="enviar" class="base_form"> <input type="hidden" name="MM_update" value="editimg"> </form> Compartilhar este post Link para o post Compartilhar em outros sites
guma 0 Denunciar post Postado Julho 4, 2007 Cara entao a imagem nao esta sendo achada.. verefica o caminho da imagem ve se ela existe etc.. $imagem_path = $path .'/'.$nome_imagem; $imagem_orig = imagecreatefromjpeg($imagem_path); // verifica se a imagem foi criada com sucesso if ($imagem_orig) { $largura_atual = imagesx($imagem_orig); $altura_atual = imagesy($imagem_orig);....etc do codigo...}Abração Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Julho 4, 2007 na verdade, é como se ele não estivesse reconhecendo o else... a logica eh mais ou menos assim: se eu alterar a imagem, fazer upload e cadastrar no banco ou se eu nao alterar a imagem, resgatar o nome ja cadastrado e cadastra-lo de novo. qd eu altero a imagem, funciona direitinho... mas, quando eu não altero, não funciona. parece que ele tá ignorando o else, vou por o código de novo...alterei umas coisas mas continua na mesma! //upload se mudar imagemif(isset($_FILES["img_upload"])){move_uploaded_file($_FILES['img_upload']['tmp_name'], '../imagens/' . $_FILES["img_upload"]["name"]);$imgcompleta = '../imagens/' . $_FILES["img_upload"]["name"];$imgquebrar = $_FILES["img_upload"]["name"];//IMAGEM A SER ABERTA (800x640)$imagem = $imgcompleta;//DEFINE OS PARÂMETROS DA MINIATURA$largura = 60;$altura = 75;//NOME DO ARQUIVO DA MINIATURA$imagem_gerada = explode(".", $imgquebrar);$imagem_gerada = "../imagens/".$imagem_gerada[0]."_mini.jpg";//CRIA UMA NOVA IMAGEM$imagem_orig = imagecreatefromjpeg($imagem);//LARGURA$pontoX = imagesx($imagem_orig);//ALTURA$pontoY = imagesy($imagem_orig);//CRIA O THUMBNAIL$imagem_fin = imagecreatetruecolor($largura, $altura);//COPIA A IMAGEM ORIGINAL PARA DENTROimagecopyresampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY);//SALVA A IMAGEMimagejpeg($imagem_fin, $imagem_gerada, 100);//grava nome pro banco$nomethumb = $imagem_gerada;}else{//se não mudar imagem$imgcompleta = $row_rs_editimg['imagem'];$nomethumb = $row_rs_editimg['thumb'];} valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 4, 2007 No primeiro post, você colocou esta parte duas vezes: if(isset($_FILES["img_upload"])){O else que você afirma estar sendo ignorado está dentro do primeiro if. Como o primeiro IF retorna false quando não há imagens, esse else é ignorado emsmo. Abraços, Beraldo Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Julho 4, 2007 mas com ou sem essa parte duas vezes, ele não funcionou. if(isset($_FILES["img_upload"])){ agora tentei assim: if(!isset($_FILES["img_upload"])){//se não mudar imagem$imgcompleta = $row_rs_editimg['imagem'];$nomethumb = $row_rs_editimg['thumb'];}//upload se mudar imagemif(isset($_FILES["img_upload"])){if(isset($_FILES["img_upload"])){//uploadmove_uploaded_file($_FILES['img_upload']['tmp_name'], '../imagens/' . $_FILES["img_upload"]["name"]);$imgcompleta = '../imagens/' . $_FILES["img_upload"]["name"];$imgquebrar = $_FILES["img_upload"]["name"];}//IMAGEM A SER ABERTA (800x640)$imagem = $imgcompleta;//DEFINE OS PARÂMETROS DA MINIATURA$largura = 60;$altura = 75;//NOME DO ARQUIVO DA MINIATURA$imagem_gerada = explode(".", $imgquebrar);$imagem_gerada = "../imagens/".$imagem_gerada[0]."_mini.jpg";//CRIA UMA NOVA IMAGEM$imagem_orig = imagecreatefromjpeg($imagem);//LARGURA$pontoX = imagesx($imagem_orig);//ALTURA$pontoY = imagesy($imagem_orig);//CRIA O THUMBNAIL$imagem_fin = imagecreatetruecolor($largura, $altura);//COPIA A IMAGEM ORIGINAL PARA DENTROimagecopyresampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY);//SALVA A IMAGEMimagejpeg($imagem_fin, $imagem_gerada, 100);//grava nome pro banco$nomethumb = $imagem_gerada;} e tentei usar else if...e nada :/ Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 4, 2007 Mas ainda há a verificação do upload duas vezes: if(isset($_FILES["img_upload"])){ if(isset($_FILES["img_upload"])){ //upload _linenums:0'>//upload se mudar imagem<strong class='bbc'>if(isset($_FILES["img_upload"])){if(isset($_FILES["img_upload"])){</strong>//upload Tente assim: if(!isset($_FILES["img_upload"])){ //se não mudar imagem $imgcompleta = $row_rs_editimg['imagem']; $nomethumb = $row_rs_editimg['thumb']; } else { //upload move_uploaded_file($_FILES['img_upload']['tmp_name'], '../imagens/' . $_FILES["img_upload"]["name"]); $imgcompleta = '../imagens/' . $_FILES["img_upload"]["name"]; $imgquebrar = $_FILES["img_upload"]["name"]; } //ESTA PARTE SERÁ EXECUTADA SEMPRE, POIS ESTÁ FORA DOS IFs //IMAGEM A SER ABERTA (800x640) $imagem = $imgcompleta; //DEFINE OS PARÂMETROS DA MINIATURA $largura = 60; $altura = 75; //NOME DO ARQUIVO DA MINIATURA $imagem_gerada = explode(".", $imgquebrar); $imagem_gerada = "../imagens/".$imagem_gerada[0]."_mini.jpg"; //CRIA UMA NOVA IMAGEM $imagem_orig = imagecreatefromjpeg($imagem); //LARGURA $pontoX = imagesx($imagem_orig); //ALTURA $pontoY = imagesy($imagem_orig); //CRIA O THUMBNAIL $imagem_fin = imagecreatetruecolor($largura, $altura); //COPIA A IMAGEM ORIGINAL PARA DENTRO imagecopyresampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY); //SALVA A IMAGEM imagejpeg($imagem_fin, $imagem_gerada, 100); //grava nome pro banco $nomethumb = $imagem_gerada; Veja se é o resultado esperado. Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Julho 4, 2007 deu na mesma...o mesmo problema.essa parte q você deixou pra fora so deve ser executada se eu trocar a imagem, para criar a nova thumb da imagem q to trocando. se eu nao trocar nd, tem q manter o q ja ta gravado no banco.mas dentro ou fora do if, deu na mesma.:/tem alguma maneira de fazer com q essas funções não sejam executadas se eu não trocar a imagem, sem ser o if? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 4, 2007 Se você incluir no else a parte que deixei fora não dá certo? Não sei se entendi bem o problema... tire-me uma dúvida: se não for enviada nenhuma imagem, as únicas ações que deverão ser executadas são estas? //se não mudar imagem $imgcompleta = $row_rs_editimg['imagem']; $nomethumb = $row_rs_editimg['thumb']; Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Julho 4, 2007 tambem não dá, tentei fazer isso! exatamente, se eu não enviar imagem, devera acontecer isso: //se não mudar imagem$imgcompleta = $row_rs_editimg['imagem'];$nomethumb = $row_rs_editimg['thumb']; assim como, se eu enviar a imagem, devera acontecer isso: //uploadmove_uploaded_file($_FILES['img_upload']['tmp_name'], '../imagens/' . $_FILES["img_upload"]["name"]);$imgcompleta = '../imagens/' . $_FILES["img_upload"]["name"];$imgquebrar = $_FILES["img_upload"]["name"];//IMAGEM A SER ABERTA (800x640)$imagem = $imgcompleta;//DEFINE OS PARÂMETROS DA MINIATURA$largura = 60;$altura = 75;//NOME DO ARQUIVO DA MINIATURA$imagem_gerada = explode(".", $imgquebrar);$imagem_gerada = "../imagens/".$imagem_gerada[0]."_mini.jpg";//CRIA UMA NOVA IMAGEM$imagem_orig = imagecreatefromjpeg($imagem);//LARGURA$pontoX = imagesx($imagem_orig);//ALTURA$pontoY = imagesy($imagem_orig);//CRIA O THUMBNAIL$imagem_fin = imagecreatetruecolor($largura, $altura);//COPIA A IMAGEM ORIGINAL PARA DENTROimagecopyresampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY);//SALVA A IMAGEMimagejpeg($imagem_fin, $imagem_gerada, 100);//grava nome pro banco$nomethumb = $imagem_gerada; Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 4, 2007 Estranho... um simples If/Else deveria funcionar... se você fizer isso acontece o quê? Dá erro, não funciona... ? Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Julho 4, 2007 ele dá os seguintes erros: Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php on line 94Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: '../imagens/' is not a valid JPEG file in /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php on line 94Warning: imagesx(): supplied argument is not a valid Image resource in /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php on line 97Warning: imagesy(): supplied argument is not a valid Image resource in /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php on line 99Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php on line 105Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php:94) in /Applications/MAMP/htdocs/marcoshermes/admin/edit_img.php on line 142e cadastra no banco isso:no campo da imagem cadastra../imagem/e no campo da thumb../imagem/_mini.jpege gera a thumb _mini.jpeg, vaziaé como se ele ignorasse o else, e cadastrasse o "nada" q vem do campo. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 4, 2007 Parece que o problema está na superglobal $_FILES, pois os nomes não estão sendo interpretados. Faça o seguinte: coloque este código no topo da página e veja o que aparece: echo "<pre>"; print_r($_FILES); echo "</pre>"; exit; Deverão ser exibidos todos os índices de $_FILES, com os respectivos valores. Se não aparecer, todo esse problema está sendo causado por erro no upload. Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Julho 4, 2007 exibe isso e mais nada: Array()nem a pagina aparece! Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 4, 2007 O resto da página não apareceu pois eu inseri o exit;. ;) Então o problema é no upload. Veja se a diretiva file_uploads está em on. Veja também se o tamanho do arquivo não está ultrapassando os valores das diretivas post_max_size e upload_max_filesize. Tente deixar "post" em minúsculas, no atributo "method". Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Julho 4, 2007 ah, entendi :)!bom, dei uma olhada lá, file_uploads está on. Já post_max_size e upload_max_filesize tem 32 mb cada. Troquei o POST por post no method. Tá tudo certo mas continua igual.O problema é só quando não envio imagem, por que, quando envio, funciona normalmente. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Julho 4, 2007 Você entendeu, mas eu não! hahaha Então o upload está correto. Provavelmente o código de criação de imagens está sendo executado usando os valores de $_FILES, que fica vazia quando não há uploads. Não há mais coisa no código, pois, se você criar a condição adequadamente, com o código do seu post, as funções da GD não serão executadas. Verifique se, fora da condição que verifica o upload, não está sendo usada a superglobal $_FILES em alguma parte. Se não conseguir resolver, poste o código da maneira que ele está no momento. Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Julho 4, 2007 hehehe! Então o upload está correto. Provavelmente o código de criação de imagens está sendo executado usando os valores de $_FILES, que fica vazia quando não há uploads.sim, eh isso o q acontece, dentro ou fora de if...um if/else deveria resolver isso como você já mencionou, mas não rola!dei uma olhada, a única que tinha, removi mas continuou com o mesmo problema.só resta mais um, que está dentro de um outro if (tá aí no código) mas ele é usado em outro campo e funciona...é de vídeo, não tem nd a ver c imagem.o código está assim:if(!isset($_FILES["img_upload"])){//se não mudar imagem$imgcompleta = $row_rs_editimg['imagem'];$nomethumb = $row_rs_editimg['thumb'];}else{//uploadmove_uploaded_file($_FILES['img_upload']['tmp_name'], '../imagens/' . $_FILES["img_upload"]["name"]);$imgcompleta = '../imagens/' . $_FILES["img_upload"]["name"];$imgquebrar = $_FILES["img_upload"]["name"];//IMAGEM A SER ABERTA (800x640)$imagem = $imgcompleta;//DEFINE OS PARÂMETROS DA MINIATURA$largura = 60;$altura = 75;//NOME DO ARQUIVO DA MINIATURA$imagem_gerada = explode(".", $imgquebrar);$imagem_gerada = "../imagens/".$imagem_gerada[0]."_mini.jpg";//CRIA UMA NOVA IMAGEM$imagem_orig = imagecreatefromjpeg($imagem);//LARGURA$pontoX = imagesx($imagem_orig);//ALTURA$pontoY = imagesy($imagem_orig);//CRIA O THUMBNAIL$imagem_fin = imagecreatetruecolor($largura, $altura);//COPIA A IMAGEM ORIGINAL PARA DENTROimagecopyresampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY);//SALVA A IMAGEMimagejpeg($imagem_fin, $imagem_gerada, 100);//grava nome pro banco$nomethumb = $imagem_gerada;}//se não for a categoria de vídeos, não carregar vídeo nenhum (engraçado q esse funciona)if ($_GET['id_cat']=="2"){$videocompleto = isset($_FILES["video"]) ? $_FILES["video"] : "";if(isset($_FILES["video"])){move_uploaded_file($_FILES['video']['tmp_name'], '../videos/' . $_FILES["video"]["name"]);}$videocompleto = '../videos/' . $_FILES["video"]["name"];}else{$videocompleto = "nulo";}//manda td pro bancoif ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "editimg")) { $updateSQL = sprintf("UPDATE imagens SET imagem=%s, video=%s, thumb=%s, legenda_pt=%s, legenda_in=%s WHERE id_img=%s", GetSQLValueString($imgcompleta, "text"), GetSQLValueString($videocompleto, "text"), GetSQLValueString($nomethumb, "text"), GetSQLValueString($_POST['legenda_pt'], "text"), GetSQLValueString($_POST['legenda_in'], "text"), GetSQLValueString($_POST['id_img'], "int")); mysql_select_db($database_mhfoto, $mhfoto); $Result1 = mysql_query($updateSQL, $mhfoto) or die(mysql_error());form<form action="<?php echo $editFormAction; ?>" method="post" enctype="multipart/form-data" name="editimg" id="editimg"><input name="img_upload" id="img_upload" type="file" class="base_form" size="20"> //campo de imagem<?//se não for a categoria de vídeo, não exibe campo de vídeoif($_GET['id_cat']==2){echo "<input name=\"video\" type=\"file\" class=\"base_form\" size=\"20\">";}?><textarea name="legenda_pt" cols="20" rows="5" class="base_form" id="legenda_pt"><? echo $row_rs_editimg['legenda_pt']?></textarea><textarea name="legenda_in" cols="20" rows="5" class="base_form" id="legenda_in"><? echo $row_rs_editimg['legenda_in']?></textarea> <input name="id_img" type="hidden" value="<? echo $row_rs_editimg['id_img']?>"> <input name="back" type="button" class="base_form" onClick="history.back();" value="voltar"> <input name="enviar" type="submit" value="enviar" class="base_form"><input type="hidden" name="MM_update" value="editimg"> </form> Compartilhar este post Link para o post Compartilhar em outros sites
tamires 0 Denunciar post Postado Julho 4, 2007 consegui!!!! ja que essa funções do GD e o $_FILES querem trabalhar de novo, eu fingi que fiz o upload de novo: if(!isset($_FILES["img_upload"])){//se não mudar imagem$_FILES["img_upload"]["name"] = $row_rs_editimg['imagem']; //puxei o endereço da imagem gravada, e ele "refaz" o upload e a thumb.}else{resto do codigo, sem alteracoes}por enquanto deu certo...qqr coisa grito!valeu a ajuda de vocês! abs tamires Compartilhar este post Link para o post Compartilhar em outros sites