Ir para conteúdo

POWERED BY:

Arquivado

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

Augusto Saggese

move_uploaded_file?

Recommended Posts

pessoal, estamos fazendo um sistema aqui de veiculos, ja esta todo pronto ele, a unica coisa q preciso é a questao da imagem..

 

como ja trabalho com php faz algum tempinho, ja tenho boas noções. A parte de edição, cadastro de veiculo e etc esta pronta.

 

Agora Ex: preciso criar 5 campos no Banco, no caso 5 fotos, 1 principal e 4 miniaturas dos carros.

 

como ficaria o upload? pq o $arquino_name seria 1 uma variavel, no caso puxaria uma foto do banco, e para puxar 5?

$arquino_name.$caminho e etc.. não entendo mt bem, alguem por gentiliza poderia perder um tempinho me ajudando?

 

obrigado pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

se um dia precisar mudar para 6 fotos, o que você fará? Terá de alterar a tabela. Por isso é melhor manter uma tabela só para fotos.

 

tabela carros

-- id

-- nome

etc

 

tabela fotos

--id

-- id_carro

-- foto

-- thumb

 

Dessa forma, pode-se ter quantas fotos quiser para cada carro.

 

 

Aí no SELECT você faz um relacionamento de tabelas (JOIN)

Compartilhar este post


Link para o post
Compartilhar em outros sites

n vai n , pq é um sistema pequeno, até que possamos elaborar o outro.

 

me ajuda por favor beraldo? To enroladao e o cara pedindo, achando q estamos enrolando ;(

 

n sei o fato de ter 5 forms, como o move uploaded vai funcionar.. :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

botei o link, o site n deixa copiar! ficar tudo doido!

 

Esse seu tuto é complicado Beraldo, pq so quero armazenar o caminho de 5 fotos,

 

depois vou dar um loop e pegar cada variavel da imagem e jogar no sistema para exibir!

 

:[ to boladao amigo ;/

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
$erro = $config = array();

// Prepara a variável do arquivo
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;

// Tamanho máximo do arquivo (em bytes)
$config["tamanho"] = 99999999;
// Largura máxima (pixels)
$config["largura"] = $_POST["X"];
// Altura máxima (pixels)
$config["altura"] = $_POST["Y"];

// Formulário postado... executa as ações
if($arquivo)
{ 
// Verifica se o mime-type do arquivo é de imagem
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"]))
{
$erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, 
bmp, gif ou png. Envie outro arquivo";
}
else
{
// Verifica tamanho do arquivo
if($arquivo["size"] > $config["tamanho"])
{
$erro[] = "Arquivo em tamanho muito grande! 
A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. 
Envie outro arquivo";
}

// Para verificar as dimensões da imagem
$tamanhos = getimagesize($arquivo["tmp_name"]);

// Verifica largura
if($tamanhos[0] > $config["largura"])
{
$erro[] = "Largura da imagem não deve 
ultrapassar " . $config["largura"] . " pixels";
}

// Verifica altura
if($tamanhos[1] > $config["altura"])
{
$erro[] = "Altura da imagem não deve 
ultrapassar " . $config["altura"] . " pixels";
}
}

// Imprime as mensagens de erro
if(sizeof($erro))
{
foreach($erro as $err)
{
echo " - " . $err . "<BR>";
}

echo "<a href=\"a_principal.php\">voltar</a>";
}

// Verificação de dados OK, nenhum erro ocorrido, executa então o upload...
else
{
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);

// Gera um nome único para a imagem
$imagem_nome = md5(uniqid(time())) . "." . $ext[1];

// Caminho de onde a imagem ficará
$imagem_dir = "./fotos/" . $imagem_nome;

// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"], $imagem_dir);


include"mdbcon.php";
$local_img=$_POST["local_img"];
mysql_query("INSERT INTO imagens VALUES ('$local_img', '$imagem_dir','N')");
mysql_close($con); 
header("Location: a_principal.php");
}
}

?>

Esse aqui acho q da para você me explicar melhor, ali ele salva o local, e a imagem, como posso armazenar 5 fotos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

botei o link, o site n deixa copiar! ficar tudo doido!

É só arrumar...

 

 

Esse seu tuto é complicado Beraldo, pq so quero armazenar o caminho de 5 fotos,

Se achou compliacdo,é porque não o entendeu. O objetivo é descomplicar e mostrar como os arquivos são enviados num formulário com diversos camps do tipo "file". Leia-o de novo, mais atentamente.

 

Veja também:

 

http://br.php.net/manual/pt_BR/features.file-upload.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim sim vou estudar ele pro proximo, uma pergunta, neste cod que mostrei. O problema é como enviar mais de uma imagem pro banco!

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas é isso que eu mostrei no tutorial. Não é exatamente como salvar mo banco, mas como fazer o upload. A lógica é a mesma. Você tem que usar um loop para percorrer os arquivos.

 

A resposta está lá. Não tenho porquê postar tudo aqui de novo para você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, mais Exemplo, no caso para cada carro cadastrado, o cara vai poder adicionar 5 fotos, ou seja em cada id mais 5 fotos.

 

o lance do upload eu ja consegui. Vou postar um que entendi bem porem só nao consegui fazer o loop

 

Saca:

 

class_upload.php

 

<?php
set_time_limit(0);
if(!(file_exists("funcoes.php"))){
	exit("funcoes.php nao encontrada");
} else {	
	require_once "funcoes.php";
}	 

class Upload
{
	var $arquivo = "";
	var $erro = array ( "0" => "upload execultado 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 Enviar_Fotos()
	{
		$this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;
		
		for($i = 0; $i < 3; $i++){
			$name	 = $this->arquivo['name'][$i];
			$type	 = $this->arquivo['type'][$i];
			$tmp_name = $this->arquivo['tmp_name'][$i];
			$error	= $this->arquivo['error'][$i];
			$size	 = $this->arquivo['size'][$i];			
			
			if(is_uploaded_file($tmp_name)) {
				$this->salvar_fotos($tmp_name, $error);
			} else {
				echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$error]."</span><br />";
			}				
		}
	}
	
	function salvar_fotos($tmp_name, $error)
	{
		$diretorio = "fotos/";
		if(!file_exists($diretorio)){
			if(!(mkdir($diretorio))) die("Nao foi possivel criar a pasta fotos");
		}

		$get = getimagesize($tmp_name);
		
		if($get["mime"] != "image/jpeg"){	
			die("<span style=\"color: white; border: solid 1px; background: red;\">Esse arquivo nao é uma imagem valida</span>");
		}
		
		$nome_foto1  = "imagem_".microtime().".jpg";		
		$nome_foto2 = "thumb_".microtime().".jpg";
		$nome_thumb1  = "imagem_".microtime().".jpg";		
		$nome_thumb2 = "thumb_".microtime().".jpg";
		
		$user = "";
		$senha = "";
		$servidor = "localhost";
		$conexao = mysql_connect($servidor,$user,$senha);
		mysql_select_db("classificados");
		
		mysql_query("INSERT INTO veiculos ( nome_foto, nome_foto2, nome_thumb1, nome_thumb2 ) VALUES ('$nome_foto1', '$nome_foto2', '$nome_thumb1', '$nome_thumb2')");
		
		if (!(is_writable($diretorio))) {
			die('O diretorio fotos não possui permissão de escrita');
		}
		//determino uma resolução maxima e se a imagem for maior ela sera reduzida
		reduz_imagem($tmp_name, 400, 300, $diretorio.$nome_foto1,$nome_foto2);		 
		//passo o tamanho da thumbnail
		reduz_imagem($tmp_name, 120, 90, $diretorio.$nome_thumb1,$nome_thumb2);
		echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$error]."</span><br />";
	}	
}

?>

funcoes.php

 

 

<?php
/*Fabyo Guimaraes de Oliveira */
function reduz_imagem($img, $max_x, $max_y, $nome_foto) {
	//pega o tamanho da imagem ($original_x, $original_y)
	list($width, $height) = getimagesize($img);

	$original_x = $width;
	$original_y = $height;

	// se a largura for maior que altura
	if($original_x > $original_y) {
	   $porcentagem = (100 * $max_x) / $original_x;	  
	}
	else {
	   $porcentagem = (100 * $max_y) / $original_y;  
	}

	$tamanho_x = $original_x * ($porcentagem / 100);
	$tamanho_y = $original_y * ($porcentagem / 100);

	$image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);
	$image   = imagecreatefromjpeg($img);
	imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);

	return imagejpeg($image_p, $nome_foto, 100);
}


?>

view.php

 

<?php

		$user = "";
		$senha = "";
		$servidor = "localhost";
		$conexao = mysql_connect($servidor,$user,$senha);
		mysql_select_db("classificados");
		
		$sql = mysql_query("SELECT * from veiculos");
		while($dados = mysql_fetch_array($sql)) {
		$nome_foto1 = $dados["nome_foto1"];
		$nome_foto2 = $dados["nome_foto2"];
		$nome_thumb1 = $dados["nome_thumb1"];
		$nome_thumb2 = $dados["nome_thumb2"];
		
	
		}
		

?>
<img src="fotos/<?= $nome_foto1; ?>"><br>
<img src="fotos/<?= $nome_thumb1; ?>"><br>

<img src="fotos/<?= $nome_foto2; ?>"><br>
<img src="fotos/<?= $nome_thumb2; ?>"><br>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ja tentei de tudo com essas variveias ae,

 

o problema é que, gera-se 3 imagens e 3 thumbs,

 

só n consigo exibir mais de 2 imagens da erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim basta eu trocar para 5.

 

Beraldo o problema n é salvar as imagens no banco irmao

 

apenas exibilas! Não consigo puxar todas! Da uns problemas!

Compartilhar este post


Link para o post
Compartilhar em outros sites

só exibe sempre 2 imagens devido ao microtime:

 

$nome_foto1 = "imagem_".microtime().".jpg";

$nome_foto2 = "thumb_".microtime().".jpg";

$nome_thumb1 = "imagem_".microtime().".jpg";

$nome_thumb2 = "thumb_".microtime().".jpg";

 

so aparece 2 imagens la do banco! ;/

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

		$user = "";
		$senha = "";
		$servidor = "localhost";
		$conexao = mysql_connect($servidor,$user,$senha);
		mysql_select_db("classificados");
		
		$sql = mysql_query("SELECT * from veiculos");
		while($dados = mysql_fetch_array($sql)) {
		$nome_foto1 = $dados["nome_foto1"];
		$nome_foto2 = $dados["nome_foto2"];
		$nome_thumb1 = $dados["nome_thumb1"];
		$nome_thumb2 = $dados["nome_thumb2"];
		
		<img src="fotos/<?php echo $nome_foto2; ?>"><br>
		<img src="fotos/<?php echo $nome_thumb2; ?>"><br>
		}
		

?>

veja se isso resolve

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tinha feito a emsma coisa, não funciona! So mostra duas vou te mostrar.

 

ai no caso tenho q criar 4 campos no mysql ne?

 

foto1 / thumb1

foto2/ thumb2

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.