tiago.iju 0 Denunciar post Postado Maio 2, 2006 Seguinte, eu tentei adaptar o código do Fábio mas a única coisa que não acontece eh a inclusão do caminho da foto no BD. Seguem os códigos: formulario.php <form action="envia_produto.php" method="post" enctype="multipart/form-data"> <table width="760" cellpadding="0" cellspacing="0" style="border:1px solid #ccc; padding:10px 10px 10px 10px;"> <tr> <td width="400" class="formtitulo" colspan="2">Incluir Produto</td> </tr> <tr> <td width="300" class="formitem"><strong>Categoria:</strong><br /> Selecione a categoria do produto</td> <td width="300"><select name="cod_cat" id="cod_cat" class="formselect"> <?php do { ?> <option value="<?php echo $result_cat['cd_categoria']?>"><?php echo $result_cat['nome_categoria']?></option> <?php } while ($result_cat = mysql_fetch_assoc($query_cat)); $rows = mysql_num_rows($query_cat); if($rows > 0) { mysql_data_seek($query_cat, 0); $result_cat = mysql_fetch_assoc($query_cat); } ?> </select></td> </tr> <tr> <td width="300" class="formitem"><strong>Nome do Produto:</strong><br /> Nome do produto</td> <td width="300"><input name="produto" type="text" class="formimport" style="width:200px;" /></td> </tr> <tr> <td width="300" class="formitem"><strong>Descrição do Produto:</strong><br /> Descrição do produto</td> <td width="300"><textarea name="descricao" style="width:200px;" rows="5" class="formimport" /></textarea></td> </tr> <tr> <td width="300" class="formitem"><strong>Valor do Produto:</strong><br /> Utilize apenas números</td> <td width="300">R$ <input name="valor" type="text" class="formimport" style="width:40px;" /> ,00</td> </tr> <tr> <td width="300" class="formitem"><strong>Foto do Produto:</strong><br /> Envie uma imagem do produto no formato jpg ou jpeg</td> <td width="300"><input type="file" name="arquivo" /></td> </tr> <tr> <td width="300" class="formitem"><strong>Destacar o Produto?</strong><br /> Marcando o produto como destaque, ele aparecerá na capa do site</td> <td width="300"><select name="destaque" class="formselect"> <option value="nao" selected>Não</option> <option value="sim">Sim</option> </select></td> </tr> <tr> <td width="300" class="formitem"><strong>Garantia do Produto:</strong><br /> Garantia do produto em meses</td> <td width="300"><input name="garantia" type="text" class="formimport" style="width:20px;" /> Meses</td> </tr> <tr> <td width="300" colspan="2" class="formsend"><input type="submit" name="incluir" value="Incluir" /></td> </tr> </table> </form> envia_produto.php <?include('ver_session.php');require_once('../Connections/conn.php');require_once('class_upload.php');$upload = new Upload();$upload->Envia_Arquivo();$cod_cat = $HTTP_POST_VARS['cod_cat'];$nome = $HTTP_POST_VARS['produto'];$descricao = nl2br($HTTP_POST_VARS['descricao']);$garantia = $HTTP_POST_VARS['garantia'];$valor = $HTTP_POST_VARS['valor'];$destaque = $HTTP_POST_VARS['destaque'];$insere = "INSERT INTO produtos (cd_produto, cd_categoria, nome, descricao, garantia, valor, imagem, destaque) VALUES (NULL, '$cod_cat', '$nome', '$descricao', '$garantia', '$valor', '$nome_thumb', '$destaque')";mysql_query($insere, $conn) or die (mysql_error());?> class_upload.php <?set_time_limit(0);include "funcoes.php";class Upload{ var $arquivo = ""; var $erro = array ( "0" => "Upload realizado com sucesso!", "1" => "O arquivo é maior que o permitido pelo Servidor", "2" => "O arquivo é maior que o permitido pelo formulario", "3" => "O upload do arquivo foi feito parcialmente", "4" => "Não foi feito o upload do arquivo" ); 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>"; } } function gera_fotos() { $diretorio = "../produtos/"; if(!file_exists($diretorio)) { mkdir($diretorio); } $nome_foto = "imagem_".time().".jpg"; $nome_thumb = "thumb_".time().".jpg"; // ISSO Q EU QUERIA INCLUIR NO BD //determino uma resolução maxima e se a imagem for maior ela sera reduzida reduz_imagem($this->arquivo['tmp_name'], 400, 300, $diretorio.$nome_foto); //passo o tamanho da thumbnail reduz_imagem($this->arquivo['tmp_name'], 120, 90, $diretorio.$nome_thumb); echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$this->arquivo['error']]."</span>"; } }?> Alguém pode me dizer o motivo de n estar incluindo o caminho no bd? Simplesmente fica vazio o campo da tabela, o resto dá td certo. Eu queria que a parte "$nome_thumb" fosse inclusa no bd. Vlw Compartilhar este post Link para o post Compartilhar em outros sites
guinuranti 0 Denunciar post Postado Maio 2, 2006 posso tá falando bobagem mas eu acho que o problema reside no teu arquivo class_upload.php. nesse arquivo é criada a variável $nome_thumb, como uma variável interna de função, você tenta acessar ela num escopo externo. você teria que alterar essa classe para refletir essa mudança. deixe-me tentar alterar isso: 1) em class_upload.php: crie 2 métodos getThumb e setThumb: public function getThumb(){ return $this->thumb;}public function setThumb($t){ $this->thumb = $t;}e depois que você cria a variável $arquivo, ponha: var $thumb = "";logo abaixo, na função gera_foto(), logo abaixo quando você cria a variável $nome_thumb, coloque: $this->setThumb($nome_thumb); 2) em envia_produto.php: depois de $upload->Envia_Arquivo(); faça: $nome_thumb = $upload->getThumb(); não testei mas é pra funcionar...acho... qualquer coisa fale aí, flws! Compartilhar este post Link para o post Compartilhar em outros sites
tiago.iju 0 Denunciar post Postado Maio 2, 2006 Cara, deu esse erro:Parse error: syntax error, unexpected T_PUBLIC in c:\www\cpd\admin\class_upload.php on line 2Q q pode ser? Compartilhar este post Link para o post Compartilhar em outros sites
guinuranti 0 Denunciar post Postado Maio 2, 2006 experimente tirar os public das funções que eu te passei.ah, quando postar, poste o erro e junto poste a linha do erro para a gente ver o que é, beleza?flws! Compartilhar este post Link para o post Compartilhar em outros sites
tiago.iju 0 Denunciar post Postado Maio 2, 2006 Ok. Agora deu isso:Fatal error: Call to undefined method Upload::setThumb() in c:\www\cpd\admin\class_upload.php on line 61Essa linha tem isso:59 $nome_foto = "imagem_".time().".jpg"; 60 $nome_thumb = "thumb_".time().".jpg";61 $this->setThumb($nome_thumb); Compartilhar este post Link para o post Compartilhar em outros sites
guinuranti 0 Denunciar post Postado Maio 2, 2006 malz aí, mas poo no php ainda não é meu forte, então vamo tentando: experimente ao invés de $this->setThumb($nome_thumb);ponha $this->thumb = $nome_thumb;vamo lá que uma hora a gente acerta :P flws! Compartilhar este post Link para o post Compartilhar em outros sites
tiago.iju 0 Denunciar post Postado Maio 2, 2006 Agora ele executou e mandou a foto, antes n tinha executado nada do código.Mas deu esse erro:Fatal error: Call to undefined method Upload::getThumb() in c:\www\cpd\admin\envia_produto.php on line 8... na linha 8 tem:6 $upload = new Upload();7 $upload->Envia_Arquivo();8 $nome_thumb = $upload->getThumb(); Compartilhar este post Link para o post Compartilhar em outros sites
guinuranti 0 Denunciar post Postado Maio 2, 2006 minha sugestão pelo momento então é trabalhar com sessão, onde você setava na propriedade da classe, sete esse valor numa variável de sessão, depois para pegar esse valor e inserir no banco recupere esse valor da sessão.vou dar uma lida em algo de poo no momento e te do um toque, porque isso que eu sugeri acima é gambiarra e das sujas, ahuahauhauha.bem, logo, logo você tem uma solução de gente aiflws! Compartilhar este post Link para o post Compartilhar em outros sites
tiago.iju 0 Denunciar post Postado Maio 2, 2006 beleza cara, vlw pela ajuda ae!Vo tenta aki, qqer coisa volto a postarFlw Compartilhar este post Link para o post Compartilhar em outros sites
mestre fyoda 1 Denunciar post Postado Maio 3, 2006 eu fiz uma aqui .qualquer coisa da uma mudada . mas eu testei aqui no meu srver e deu certo .ai vai uma dica . se você estiver usando um servidor local , você vai no arquivo php.ini onde se localiza na pasta windows e depois , para procurar a linha no bloco de notas , você aperte a tecla ctrl+f e depois cole isso : ;extension=php_gd2.dll , retire o ; e pronto . reinicie a maquina e teste . Caso seja hospedagem você tera q entrar em contato com ela . <?php//Diretório aonde ficará os arquivos$dir = "D:/bin/www/upload/fotos/";//Extensões permitidas$ext = array("gif");//Formulárioecho '<form method="post" action="'.$PHP_SELF.'" enctype="multipart/form-data">Arquivo: <input type="file" name="file"><br /><input type="submit" name="submit" value=" OK "></form>';//Se for enviadoif (isset($_POST['submit'])) {//Obtendo info. dos arquivos$f_name = $_FILES['file']['name'];$f_tmp = $_FILES['file']['tmp_name'];$f_type = $_FILES['file']['type'];$f_size = $_FILES['file']['size'];//Pegando o nome$name = $f_name;$size = $f_size;$type = $f_type;//Verificando se o campo contem arquivoif ( ($name!="") and (is_file($f_tmp)) and (in_array(substr($name, -3),$ext)) and ( $size < 3000000 ) and (move_uploaded_file($f_tmp, $dir.$name)) ) { echo "<i>$name enviado com sucesso!</i>"; }else { echo "<i>Falhou!</i>"; } echo "<br />";}?>qualquer duvida estamos ai . Compartilhar este post Link para o post Compartilhar em outros sites
tiago.iju 0 Denunciar post Postado Maio 3, 2006 Tá, mas o q q eh isso?A parte de envio eu tenho funcionando! Qro saber a parte de tirar da função a variável.Flw Compartilhar este post Link para o post Compartilhar em outros sites
guinuranti 0 Denunciar post Postado Maio 3, 2006 o tiago, teu php não é dos mais recentes é?onte de noite eu tava brincando aqui em baia (5.1.2) e diversos erros que você me disse que dava com você para mim não deu...como public que deu pane pra ti pra mim não deu...ah, e aqui deu certo eu setar uma variável de sessão dentro de um método de classe, e depois acessar essa variável de sessão externamente.flws! Compartilhar este post Link para o post Compartilhar em outros sites
tiago.iju 0 Denunciar post Postado Maio 3, 2006 Cara, se n me engano eh o útlimo php. To usando o apache 1.3 acho, e php 5Bah, agora n sei...Vo ver a versão... qqr coisa aviso.Flw Compartilhar este post Link para o post Compartilhar em outros sites
Raziel Nomack 0 Denunciar post Postado Maio 11, 2006 Caras, seguinte tava num tópico semelhante e eles me mandaram pra cá... de lá.... eu resolvi um bug e agora funcionou o código de lá.... link http://forum.imasters.com.br/index.php?sho...18entry562418 Compartilhar este post Link para o post Compartilhar em outros sites