Ir para conteúdo

POWERED BY:

Arquivado

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

tiago.iju

Upload de imagens incluindo path no bd

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

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