Ir para conteúdo

POWERED BY:

Arquivado

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

cassiano óliver

Cadastro de Upload de imagem

Recommended Posts

fiz tutorial do fabyo sobre upload de imagem e armazenar o path no BD..

Tentei implementar o script em um outro script, de cadastro...

o cadastro funciona normalmente, mas a foto não está sendo enviada...

Já tentei de várias formas, mas sem sucesso..

 

o script do upload é esse:

// Verifica se o arquivo existeif(isset ($_FILES["arquivo"]) ) {	// Caso exista, atribui o caminho dele à variavel arquivo	$arquivo = $_FILES["arquivo"];	// Diretorio onde serão enviadas as imagens	$pasta = "imagens/";	// Verifica se a pasta existe, se não, cria ela	if (!file_exists ($pasta) ) {		mkdir ($pasta, 0777);	}	// Variável que armazenará o nome do arquivo	$arquivo_nome = $pasta.$arquivo["name"];	// Envia a imagem	move_uploaded_file ($arquivo["tmp_name"], $arquivo_nome);   	// Conecta ao BD	$conexao = mysql_connect ("localhost", "master", "");	// Seleciona o BD	mysql_select_db ("fotos");	// Inserindo o caminho do arquivo no banco	mysql_query ("INSERT INTO fotos VALUES ('', '$arquivo_nome')");	// Fechando a conexao	mysql_close ($conexao);}

Tentei implementar no cadastrar.php, mas não esta quardando o path da imagem no BD..

 

cadastrar.php

<?include ("conexao.php");$NomeEvento = $_POST["evento"];$dia		 = $_POST["dia"];$mes		= $_POST["mes"]; // Mes do evento por extenso$ano		 = $_POST["ano"];$cidade	 = $_POST["cidade"];$estado	 = $_POST["estado"];$email		 = $_POST["email"];$tel		 = $_POST["tel"];$obs		 = $_POST["obs"];$data		 = $ano."-".$mes."-".$dia; // Data do evento a ser inserida no BD$sql = "INSERT INTO $tabela (data, evento, dia, mes, ano, cidade, estado, email, tel, obs) VALUES ('$data', '$NomeEvento', '$dia', '$mes', '$ano', '$cidade', '$estado', '$email', '$tel', '$obs')";if (mysql_query ($sql)) {	echo "Dados cadastrados com sucesso!";	echo "<p><a href='cadastro.html' title='Cadastrar mais shows'>Cadastrar outro show'</a></p>";}else {	echo "Falha ao cadastrar...";} ?>

já criei a tabela "fotos", com os campos: "id" e "foto"...

 

como faço pra acrescentar esse script no cadastrar.php e tbm poder utilizar o IF pra saber se ocorreu tudo certinho...?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentando fazer aqui...

testei assim:

cadastrar.php

<?include ("conexao.php");$NomeEvento = $_POST["evento"];$dia 		= $_POST["dia"];$mes		= $_POST["mes"]; // Mes do evento por extenso$ano 		= $_POST["ano"];$cidade 	= $_POST["cidade"];$estado 	= $_POST["estado"];$email 		= $_POST["email"];$tel 		= $_POST["tel"];$obs 		= $_POST["obs"];$data 		= $ano."-".$mes."-".$dia; // Data do evento a ser inserida no BD// Verifica se o arquivo existeif ($_FILES["arquivo"] != "none" ) {	// Armazena o path do arquivo na variável	$arquivo = $_FILES["arquivo"];	// Pasta de destino das imagens	$pasta = "imagens/";	//Se nao existir a pasta ele cria uma	if (!file_exists ($pasta) ) {		mkdir ($pasta, 0777);	}	// Aramazena o nome do arquivo na variável	$arquivo_nome = $pasta . $arquivo["name"];	// Faz o upload da imagem	move_uploaded_file($arquivo["tmp_name"], $arquivo_nome);	// Salva o path da foto no BD	$inseri = mysql_query ("INSERT INTO fotos (id, foto) VALUES ('', '$arquivo_nome')");	// Verifica o envio, se sim, exibe mensagem de sucesso, caso contrário, mensagem de erro	if (!$inseri) {		echo "<h2>Falha no envio da imagem!</h2>";	}}$sql2 = mysql_query ("INSERT INTO $tabela (data, evento, dia, mes, ano, cidade, estado, email, tel, obs) VALUES ('$data', '$NomeEvento', '$dia', '$mes', '$ano', '$cidade', '$estado', '$email', '$tel', '$obs')");if (!$sql2) {	echo "Falha ao cadastrar...";}else {	echo "Dados cadastrados com sucesso!";}mysql_close ($conexao);?>

Ta cadastrando tudo, menos o path da foto...

 

no BD aparece assim no campo foto...

imagens/

 

mas o nome da foto não aparece....

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria porque voce colocou a funcaomove_uploaded_file () antes da conexao com o bd?afinal, pode me explicar como essa funcao funciona e pra que serve exatamente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes?

<?

 

include ("conexao.php"); // conexao

 

$NomeEvento = $_POST["evento"];

$dia = $_POST["dia"];

$mes = $_POST["mes"]; // Mes do evento por extenso

$ano = $_POST["ano"];

$cidade = $_POST["cidade"];

$estado = $_POST["estado"];

$email = $_POST["email"];

$tel = $_POST["tel"];

$obs = $_POST["obs"];

 

$data = $ano."-".$mes."-".$dia; // Data do evento a ser inserida no BD

 

// Verifica se o arquivo existe

if ($_FILES["arquivo"] != "none" ) {

// Armazena o path do arquivo na variável

$arquivo = $_FILES["arquivo"];

// Pasta de destino das imagens

$pasta = "imagens/";

//Se nao existir a pasta ele cria uma

if (!file_exists ($pasta) ) {

mkdir ($pasta, 0777);

}

// Aramazena o nome do arquivo na variável

$arquivo_nome = $pasta . $arquivo["name"];

// Faz o upload da imagem

move_uploaded_file($arquivo["tmp_name"], $arquivo_nome); // copia o arquivo

// Salva o path da foto no BD

$inseri = mysql_query ("INSERT INTO fotos (id, foto) VALUES ('', '$arquivo_nome')");

// Verifica o envio, se sim, exibe mensagem de sucesso, caso contrário, mensagem de erro

if (!$inseri) {

echo "<h2>Falha no envio da imagem!</h2>";

}

}

 

$sql2 = mysql_query ("INSERT INTO $tabela (data, evento, dia, mes, ano, cidade, estado, email, tel, obs) VALUES ('$data', '$NomeEvento', '$dia', '$mes', '$ano', '$cidade', '$estado', '$email', '$tel', '$obs')");

 

if (!$sql2) {

echo "Falha ao cadastrar...";

}

else {

echo "Dados cadastrados com sucesso!";

}

 

mysql_close ($conexao);

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o problema é no upload.

Você colocou o atributo enctype="multipart/form-data" na tag form? O formulário está com método POST?

 

Faça o que falei no post anterior e veja se aparecem as informações da superglobal $_FILES.

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz assim:

<?include ("conexao.php");$NomeEvento = $_POST["evento"];$dia 		= $_POST["dia"];$mes		= $_POST["mes"]; // Mes do evento por extenso$ano 		= $_POST["ano"];$cidade 	= $_POST["cidade"];$estado 	= $_POST["estado"];$email 		= $_POST["email"];$tel 		= $_POST["tel"];$obs 		= $_POST["obs"];$data 		= $ano."-".$mes."-".$dia; // Data do evento a ser inserida no BD// Verifica se o arquivo existeif ($_FILES["arquivo"] != "none" ) {	// Armazena o path do arquivo na variável	$arquivo = $_FILES["arquivo"];	// Pasta de destino das imagens	$pasta = "imagens/";	//Se nao existir a pasta ele cria uma	if (!file_exists ($pasta) ) {		mkdir ($pasta, 0777);	}	// Aramazena o nome do arquivo na variável	$arquivo_nome = $pasta . $arquivo["name"];	// Faz o upload da imagem	move_uploaded_file($arquivo["tmp_name"], $arquivo_nome);	// Salva o path da foto no BD	$inseri = mysql_query ("INSERT INTO fotos VALUES ('', '$arquivo_nome')");	// Verifica o envio, se sim, exibe mensagem de sucesso, caso contrário, mensagem de erro	print_r($_FILES);}mysql_close ($conexao);?>

aí apareceu "Array ( )"..

 

é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conseguiiiiiiiiiiii!!!!!!!!

ficou assim:

<?include ("conexao.php");$NomeEvento = $_POST["evento"];$dia 		= $_POST["dia"];$mes		= $_POST["mes"]; // Mes do evento por extenso$ano 		= $_POST["ano"];$cidade 	= $_POST["cidade"];$estado 	= $_POST["estado"];$email 		= $_POST["email"];$tel 		= $_POST["tel"];$obs 		= $_POST["obs"];$data 		= $ano."-".$mes."-".$dia; // Data do evento a ser inserida no BD// Armazena o path do arquivo na variável$arquivo = $_FILES["arquivo"];// Pasta de destino das imagens$pasta = "imagens/";// Aramazena o nome do arquivo na variável$arquivo_nome = $pasta . $arquivo["name"];// Faz o upload da imagemmove_uploaded_file($arquivo["tmp_name"], $arquivo_nome);// Salva o path da foto no BD$sql1 = mysql_query ("INSERT INTO fotos (id, fotos) VALUES ('', '$arquivo_nome')");if (!$sql1) {	echo "Falha ao enviar a imagem!";}$sql2 = mysql_query ("INSERT INTO $tabela (data, evento, dia, mes, ano, cidade, estado, email, tel, obs) VALUES ('$data', '$NomeEvento', '$dia', '$mes', '$ano', '$cidade', '$estado', '$email', '$tel', '$obs')");if (!$sql2) {	echo "Falha ao cadastrar...";}else {	echo "Dados cadastrados com sucesso!";}mysql_close ($conexao);?>

Tirei o if (...) {} aí funcionou certinho...

 

vou continuar os estudos aqui, qualquer coisa posto dnovo!

 

vlw beraldo + uma vez..!

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é, isso que não entendi, no script de upload, está como você falou, e funcionava certinho, só qnd juntei os 2 que não funcionou....

isso seria pra verificar se o campo "arquivo" está ou não vazio certo?

 

--------------------------------------------------------------------------------------

 

Não querendo abusar... http://forum.imasters.com.br/public/style_emoticons/default/clap.gif , mas já abusando, agora não tenho idéia de como fazer pra exibir junto com as informações do show, o seu respectivo cartaz...

 

como vou fazer?

 

o script que exibe as informações está assim:

 

agenda.php

<?// Arquivo de conexão com o BDinclude ("conexao.php");// Armazena os dados listados na tabela eventos$seleciona = mysql_query ("SELECT * FROM $tabela ORDER BY data");// Gera o loop com os dados selecionados da tabela eventoswhile ($exibe = mysql_fetch_array ($seleciona)) {	// Armazena os dados dos campos da tabela em sua respectiva variável	$evento = $exibe["evento"];	$dia 	= $exibe["dia"];	$mes	= $exibe["mes"];	$ano 	= $exibe["ano"];	$cidade = $exibe["cidade"];	$estado = $exibe["estado"];	$email 	= $exibe["email"];	$tel 	= $exibe["tel"];	$obs 	= $exibe["obs"];		... // aqui tem código, mas removi pra diminuir...		// Montando a visualização da página	echo "<div id='geral'>";		echo "<h2 class='TituloEvento'>$evento</h2>";		echo "<p class='CampoEvento'>Data: <span class='InfoEvento'>$dia de $mes de $ano</span></p>";		echo "<p class='CampoEvento'>Cidade: <span class='InfoEvento'>$cidade - $estado</span></p>";		echo "<p class='CampoEvento'>Telefone: <span class='InfoEvento'>$tel</span></p>";		echo "<p class='CampoEvento'>Observações: <br /><span class='InfoEvento'>$obs</span></p>";		echo "<br />";		echo "<p class='CampoEvento'>Mais informações? <a href='mais_informacoes.php' title='Mais informações'>Clique aqui</a></p>";	echo "</div>";}?>

No BD agenda, tenho 2 tabelas (shows e fotos), na tabela fotos, tem os campos (id e foto)....ta correto assim?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você terá de fazer uma junção (JOIN).

 

Select t1.campo, t2.campo From t1 Inner Join t2 On t1.id = t2.id_t1;

No ON você coloca a cláusula que junta as duas tabelas ( O ID na maioria dos casos).

 

Veja:

http://forum.imasters.com.br/index.php?showtopic=140816

http://dev.mysql.com/doc/refman/4.1/pt/join.html

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

li dez vezes o tópico que você citou...

mas acho que não consegui raciocinar pra esse meu caso..

fiz assim:

 

<?// Arquivo de conexão com o BDinclude ("conexao.php");// Armazena os dados listados na tabela eventos$seleciona = mysql_query ("SELECT show.id, fotos.foto FROM shows INNER JOIN fotos ON show.id = fotos.foto");// Gera o loop com os dados selecionados da tabela eventoswhile ($exibe = mysql_fetch_array ($seleciona)) {	// Armazena os dados dos campos da tabela em sua respectiva variável	$evento = $exibe["evento"];	$dia 	= $exibe["dia"];	$mes	= $exibe["mes"];	$ano 	= $exibe["ano"];	$cidade = $exibe["cidade"];	$estado = $exibe["estado"];	$email 	= $exibe["email"];	$tel 	= $exibe["tel"];	$obs 	= $exibe["obs"];	$foto 	= $exibe["foto"]		// Convertendo o mes numérico para extenso	switch ($exibe["mes"]) {		case "01":		$mes = "Janeiro";		break;				case "02":		$mes = "Fevereiro";		break;				case "03":		$mes = "Março";		break;				case "04":		$mes = "Abril";		break;				case "05":		$mes = "Maio";		break;				case "06":		$mes = "Junho";		break;				case "07":		$mes = "Julho";		break;				case "08":		$mes = "Agosto";		break;				case "09":		$mes = "Setembro";		break;				case "10":		$mes = "Outubro";		break;				case "11":		$mes = "Novembro";		break;				case "12":		$mes = "Dezembro";		break;	}		// Montando a visualização da página	echo "<div id='geral'>";		echo "<h2 class='TituloEvento'>$evento</h2>";		echo "<p class='CampoEvento'>Data: <span class='InfoEvento'>$dia de $mes de $ano</span></p>";		echo "<p class='CampoEvento'>Cidade: <span class='InfoEvento'>$cidade - $estado</span></p>";		echo "<p class='CampoEvento'>Telefone: <span class='InfoEvento'>$tel</span></p>";		echo "<p class='CampoEvento'>Observações: <br /><span class='InfoEvento'>$obs</span></p>";		echo "<br />";		echo "<img src='$foto' />";		echo "<p class='CampoEvento'>Mais informações? <a href='mais_informacoes.php' title='Mais informações'>Clique aqui</a></p>";	echo "</div>";}?>
Qnd vou testar aparece isso:

Parse error: syntax error, unexpected T_SWITCH in C:\Arquivos de programas\Apache Group\Apache\htdocs\agenda2\agenda.php on line 26

 

Me dá uma luz ae que agora to perdido...

não to entendendo a lógica do raciocínio...

Compartilhar este post


Link para o post
Compartilhar em outros sites

corrigi, tbm ta o msm erro...

 

agora eu fiz assim:

as tabelas no BD agenda:

 

Shows

CREATE TABLE `shows` (`id` INT NOT NULL AUTO_INCREMENT ,`data` DATE NOT NULL ,`evento` VARCHAR( 80 ) NOT NULL ,`dia` INT( 2 ) NOT NULL ,`mes` INT( 2 ) NOT NULL ,`ano` INT( 4 ) NOT NULL ,`cidade` VARCHAR( 40 ) NOT NULL ,`estado` VARCHAR( 2 ) NOT NULL ,`email` VARCHAR( 60 ) NOT NULL ,`tel` VARCHAR( 18 ) NOT NULL ,`obs` TEXT NOT NULL ,PRIMARY KEY ( `id` ) ) TYPE = MYISAM;
fotos

CREATE TABLE `fotos` (`id` INT NOT NULL AUTO_INCREMENT  ,`foto` VARCHAR( 255 ) NOT NULL ,PRIMARY KEY ( `id` )) ENGINE = MYISAM
show_cartaz

agora eu fiz assim:as tabelas no BD agenda:Shows[code]CREATE TABLE `shows` (`id` INT NOT NULL AUTO_INCREMENT ,`data` DATE NOT NULL ,`evento` VARCHAR( 80 ) NOT NULL ,`dia` INT( 2 ) NOT NULL ,`mes` INT( 2 ) NOT NULL ,`ano` INT( 4 ) NOT NULL ,`cidade` VARCHAR( 40 ) NOT NULL ,`estado` VARCHAR( 2 ) NOT NULL ,`email` VARCHAR( 60 ) NOT NULL ,`tel` VARCHAR( 18 ) NOT NULL ,`obs` TEXT NOT NULL ,PRIMARY KEY ( `id` ) ) TYPE = MYISAM;
fotos

CREATE TABLE `show_cartaz` (`id_show` INT NOT NULL AUTO_INCREMENT  ,`url_foto` VARCHAR( 255 ) NOT NULL ,PRIMARY KEY ( `id` )) ENGINE = MYISAM
o cadastrar.php, nao vou postar pq ta inserindo certinho as informações..

 

no agenda.php ta assim agora:

<?

 

// Arquivo de conexão com o BD

include ("conexao.php");

 

// Armazena os dados listados na tabela eventos

$seleciona = mysql_query ("SELECT shows.id, fotos.foto

FROM (shows INNER JOIN show_cartaz ON shows.id = show_cartaz.url_foto)

INNER JOIN fotos ON show_cartaz.url_foto = shows.id");

 

// Gera o loop com os dados selecionados da tabela eventos

while ($exibe = mysql_fetch_array ($seleciona)) {

// Armazena os dados dos campos da tabela em sua respectiva variável

$evento = $exibe["evento"];

$dia = $exibe["dia"];

$mes = $exibe["mes"];

$ano = $exibe["ano"];

$cidade = $exibe["cidade"];

$estado = $exibe["estado"];

$email = $exibe["email"];

$tel = $exibe["tel"];

$obs = $exibe["obs"];

$foto = $exibe["url_foto"];

 

// Convertendo o mes numérico para extenso

switch ($exibe["mes"]) {

case "01":

$mes = "Janeiro";

break;

 

case "02":

$mes = "Fevereiro";

break;

 

case "03":

$mes = "Março";

break;

 

case "04":

$mes = "Abril";

break;

 

case "05":

$mes = "Maio";

break;

 

case "06":

$mes = "Junho";

break;

 

case "07":

$mes = "Julho";

break;

 

case "08":

$mes = "Agosto";

break;

 

case "09":

$mes = "Setembro";

break;

 

case "10":

$mes = "Outubro";

break;

 

case "11":

$mes = "Novembro";

break;

 

case "12":

$mes = "Dezembro";

break;

}

 

// Montando a visualização da página

echo "<div id='geral'>";

echo "<h2 class='TituloEvento'>$evento</h2>";

echo "<p class='CampoEvento'>Data: <span class='InfoEvento'>$dia de $mes de $ano</span></p>";

echo "<p class='CampoEvento'>Cidade: <span class='InfoEvento'>$cidade - $estado</span></p>";

echo "<p class='CampoEvento'>Telefone: <span class='InfoEvento'>$tel</span></p>";

echo "<p class='CampoEvento'>Observações: <br /><span class='InfoEvento'>$obs</span></p>";

echo "<br />";

echo "$foto";

echo "<p class='CampoEvento'>Mais informações? <a href='mais_informacoes.php' title='Mais informações'>Clique aqui</a></p>";

echo "</div>";

}

 

?>

A lógica está correta?

Preciso exibir o cartaz do seu respectivo show..

 

qnd executo o agenda.php simplesmente aparece em branco a página....

 

* kra, to gostando desse desafio... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif (pra mim é claro...)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, consegui...mas não foi com o relacionamento entre as tabelas. Apenas inseri um campo (ur_foto) na tabela shows, lá é armazenado o path da foto, e depois faço a exibição dela normalmente..Mas vou continuar estudando essa parte do relacionamento, achei interessante...-----------------------------------------------------------Bom agora eu vou parte pra administração desse sistema...As possíveis dúvidas beraldo, eu posto neste tópico mesmo, ou você acha melhor eu criar um novo?Mais uma vez vlw pela ajuda...abraço!

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.