Ir para conteúdo

POWERED BY:

Arquivado

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

Alex Camargo

[Resolvido] Como carregar imagem defalt (do tipo imagem não dispo

Recommended Posts

Olá, sou novo integrante do fórum, ja havia lido muita coisa nele.. agora sou membro! Se alguem puder me ajudar tenho um script que manda fotos pro servidor e mostra tudo ok.

 

Minha duvida é como faço se o produto não tiver imagem mandar um caminho de imagem defaul..

 

Esse é o script que manda e inserei no banco.

<?php
// Conexão com o banco de dados
$conn = @mysql_connect("", "", "") or die ("Problemas na conexão.");
$db = @mysql_select_db("", $conn) or die ("Problemas na conexão");

// Se o usuário clicou no botão cadastrar efetua as ações
if ($_POST['cadastrar']) {

// Recupera os dados dos campos
$titulo = $_POST['titulo'];
$genero = $_POST['genero'];
$foto = $_FILES["foto"];
$autor = $_POST['autor'];
$editora = $_POST['editora'];
$preco = $_POST['preco'];
$hora = date("H:i");
   $data = date("d/m/Y");


// Se a foto estiver sido selecionada
if (!empty($foto["name"])) {

	// Largura máxima em pixels
	$largura = 750;
	// Altura máxima em pixels
	$altura = 750;
	// Tamanho máximo do arquivo em bytes
	$tamanho = 1000;

   	// Verifica se o arquivo é uma imagem
   	if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto["type"])){
    	   $error[1] = "Formato de imagem não suportado";
  	 	} 

	// Pega as dimensões da imagem
	$dimensoes = getimagesize($foto["tmp_name"]);

	// Verifica se a largura da imagem é maior que a largura permitida
	if($dimensoes[0] > $largura) {
		$error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels";
	}

	// Verifica se a altura da imagem é maior que a altura permitida
	if($dimensoes[1] > $altura) {
		$error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels";
	}

	// Verifica se o tamanho da imagem é maior que o tamanho permitido
	if($arquivo["size"] > $tamanho) {
  		 	$error[4] = "A imagem deve ter no máximo ".$tamanho." bytes";
	}

	// Se não houver nenhum erro
	if (count($error) == 0) {

		// Pega extensão da imagem
		preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["name"], $ext);

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

       	// Caminho de onde ficará a imagem
       	$caminho_imagem = "fotos/" . $nome_imagem;

		// Faz o upload da imagem para seu respectivo caminho
		move_uploaded_file($foto["tmp_name"], $caminho_imagem);

		// Insere os dados no banco




		$sql = mysql_query("INSERT INTO produtos (id, titulo, genero, foto, autor, editora, preco, hora, data ) VALUES ('', '".$titulo."','".$genero."', '".$nome_imagem."','".$autor."','".$editora."', '".$preco."', NOW(), NOW() )");

		// Se os dados forem inseridos com sucesso
		if ($sql){
			echo '<p align="center"><b><font size="5">Seu Livro foi inserido com sucesso!</font></b></p> <meta http-equiv="Refresh" content="3;" /> ';
		}
	}

	// Se houver mensagens de erro, exibe-as
	if (count($error) != 0) {
		foreach ($error as $erro) {
			echo $erro . "<br />";
		}
	}
}
}
?>




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http-~~-//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http-~~-//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>:: Livraria .net ::</title>
<link href="../style.css" rel="stylesheet" type="text/css">




<script type="text/javascript">
<!--
function MM_swapImgRestore() { //v3.0
 var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
 var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
   var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
   if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
 var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
   d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
 if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
 for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
 if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
 var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
  if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</script>


<script type="text/javascript">
function validaCampo()
{
if(document.cadastro.titulo.value=="")
{
alert("O Campo Titulo do livro é obrigatório!");
return false;
}

else
if(document.cadastro.preco.value=="")
{
alert("O Campo Preço é obrigatório!");
return false;
}

else
if(document.cadastro.genero.value=="")
{
alert("O Campo Genero é obrigatório!");
return false;
}
else
if(document.cadastro.foto.value=="")
{
alert("O Campo Foto é obrigatório!");
return false;
}
else
if(document.cadastro.editora.value=="")
{
alert("O Campo Editora é obrigatório!");
return false;
}
else

if(document.cadastro.preco.value=="")
{
alert("O Campo Preço é obrigatório!");
return false;
}


else
return true;
}
<!-- Fim do JavaScript que validará os campos obrigatórios! -->
</script>

<script type="text/javascript">

function digitos(event){

 if (window.event) {
   // IE
   key = event.keyCode;
 } 
 else if (event.which) {
   // netscape
   key = event.which;
 }
 if (key != 8 || key != 13 || key < 48 || key > 57)
   return (((key > 47) && (key < 58)) || (key == 8 ) || (key == 13));
   return true;
}
</script>

<script language="javascript">

function MascaraMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){
   var sep = 0;
   var key = '';
   var i = j = 0;
   var len = len2 = 0;
   var strCheck = '0123456789';
   var aux = aux2 = '';
   var whichCode = (window.Event) ? e.which : e.keyCode;
   if (whichCode == 13) return true;
   key = String.fromCharCode(whichCode); // Valor para o código da Chave
   if (strCheck.indexOf(key) == -1) return false; // Chave inválida
   len = objTextBox.value.length;
   for(i = 0; i < len; i++)
       if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break;
   aux = '';
   for(; i < len; i++)
       if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i);
   aux += key;
   len = aux.length;
   if (len == 0) objTextBox.value = '';
   if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux;
   if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux;
   if (len > 2) {
       aux2 = '';
       for (j = 0, i = len - 3; i >= 0; i--) {
           if (j == 3) {
               aux2 += SeparadorMilesimo;
               j = 0;
           }
           aux2 += aux.charAt(i);
           j++;
       }
       objTextBox.value = '';
       len2 = aux2.length;
       for (i = len2 - 1; i >= 0; i--)
       objTextBox.value += aux2.charAt(i);
       objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len);
   }
   return false;
}
</script>

<link rel="SHORTCUT ICON" href="http-~~-//lh4.ggpht.com/_pGs05Evn3GQ/SqqwxfrAgRI/AAAAAAAAAI0/MCSdO_9qilE/s400/favicon.png
" type="image/x-icon">


</head>

<body bgcolor="#FFFFFF" >


<div id="wrap" >

 <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
 <tr align="center">
   <td><img src="../imagens/logo livravia copy.png" alt="Livraria .net" /></td>
 </tr>
  <tr>
 <tr align="center">
   <td><img src="../imagens/inserir_livros.png" alt="Inserir livros" /></td>
 </tr>
</table>


   <tr>
   <td align="center">
      <table width="60%" cellspacing="0" cellpadding="0">
     <tr>
       <td>
       <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" name="cadastro" onSubmit="return validaCampo(); return false;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
 <tr>
   <td><span style="color:#fbaa0e; font-size:15px; font-weight:bold">Titulo</span></td>
 </tr>
 <tr>
   <td><input  type="text" name="titulo" size="25" maxlength="25" onSubmit="return validaCampo(); return false;"> 
 </tr>
 <tr>
   <tr>
   <td><span style="color:#fbaa0e; font-size:15px; font-weight:bold">Gênero</span></td>
 </tr>
 <tr>
    <td> <select  name="genero"  onSubmit="return validaCampo(); return false;" >

   <option></option>
         <option value="Adulto ">Adulto </option>
       <option value="Antologias ">Antologias </option>
       <option value="Autoajuda">Autoajuda</option>
       <option value="Biograficos ">Biográficos </option>
       <option value="Cientificos">Científicos</option>
       <option value="Esportes">Esportes</option>
       <option value=" Espiritas"> Espíritas </option>
       <option value="Informatica">Informática</option>
       <option value="Musica">Música</option>
       <option value="Poesia">Poesia</option>
       <option value="Romances">Romances</option>
	<option value="Outros">Outros</option>


         </select>
 </tr>
 <tr>

   <td><span style="color:#fbaa0e; font-size:15px; font-weight:bold">Imagem</span></td>
 </tr>
   <tr>
   <td><input   type="file" name="foto"   onSubmit="return validaCampo(); return false;"></td>
 </tr>
   <tr>
   <td><span style="color:#fbaa0e; font-size:15px; font-weight:bold">Autor(res)</span></td>
 </tr>
 <tr>
   <td><input  type="text" name="autor" size="40" maxlength="40" onSubmit="return validaCampo(); return false;"> 
 </tr>

   <tr>
   <td><span style="color:#fbaa0e; font-size:15px; font-weight:bold">Editora</span></td>
 </tr>

 <tr>
   <td><input  type="text" name="ano" size="4" maxlength="4"  onKeyPress="return digitos(event, this);" onSubmit="return validaCampo(); return false;"> 
 </tr>
   <td><span style="color:#fbaa0e; font-size:15px; font-weight:bold">Preço</span></td>
 </tr>
 <tr>
   <td><input  type="text" name="preco" size="10" maxlength="10" onKeyPress="return(MascaraMoeda(this,'.',',',event));" > <span style="color:#fbaa0e; font-size:15px;">(Ex.: 52,00)</span></td>
 </tr>





</table>
<br />
<input type="submit" name="cadastrar" value="Inserir" > <input type="reset" value="Limpar">
</form>
</td>

     </tr>
   </table>


<table  align="center" border="0" cellspacing="0" cellpadding="0">
 <tr>
   <td><a href="adm.php" class="voltar" > Voltar</a></td>
 </tr>
</table>  

</div>


</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atenção:

Este subfórum é destinado apenas para postagem de artigos, tutoriais e matérias sobre PHP.

Não é permitido a abertura de tópicos com dúvidas. Para isso, use o Fórum de PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Eduardo.. era isso que tinha pensado em fazer. Só não sei a sintaxe exata. Se tiver como me ajudar..

 

Os próximos tópicos colocarei lá sem problemas, é que sou novo nesse fórum..

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha Alex,

 

Pelo que vi, esse código que você enviou é o que permitirá ao usuário enviar uma imagem para o servidor, porém é necessário o código que monta a página que exibe as imagens.

 

Por exemplo, em algum lugar você deve ter algo assim:

echo '<img src="' .$rs['foto'].'" />';

Ai você deve trocar para alguma coisa assim:

$caminho_imagem = "fotos/" . $rs['foto'];
                
if ( is_file( $caminho_imagem ) && is_readable( $caminho_imagem ) )
    echo '<img src="' . $caminho_imagem . '" alt="' . $rs['titulo'].'" />'; //Existe a imagem, mostra para o usuário
else
    echo '<img src="fotos/imagem_nao_disponivel.jpg" alt="sem imagem" />'; //Não existe imagem ou ela não está disponível, mostra a padrão

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu costumo fazer assim, se for via DB:

 

Na tabela da base crio um campo que recebe o caminho da imagem, se não recebe, o default do campo é NULL, aí basta fazer a verificação:

 

($var['campo']=='NULL') ? print '<img src="semfoto.jpg">' : print '<img src="'.$var['campo'].'">';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, muito obrigado pelos posts.. só que pelo que li voces me mostram como o php vai "mostrar" a imagem do banco, sendo que a minha duvida é como "inserir" automaticamente uma imagem padrão no caso de o usuario não tiver imagem para tal produto..

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, muito obrigado pelos posts.. só que pelo que li voces me mostram como o php vai "mostrar" a imagem do banco, sendo que a minha duvida é como "inserir" automaticamente uma imagem padrão no caso de o usuario não tiver imagem para tal produto..

 

Bom amigo, acho que a forma mais fácil de você resolver isso é via banco de dados. Você tem a coluna que armazena o nome da imagem, ai você coloca nessa coluna um valor padrão, 'semimagem.jpg' ai, se o usuário não fizer o upload de uma imagem, essa coluna manterá o valor padrão.

Dessa forma, na hora de exibir os produtos você nem precisa fazer verificações, olha só:

 

mysql> create table `produtos` (
    ->     `id` mediumint(8) unsigned not null auto_increment,
    ->     `nome` varchar(60) not null,
    ->     `imagem` varchar(80) not null default 'semimagem.jpg',
    ->     primary key(`id`),
    ->     key `nomes`(`nome`)
    -> );
Query OK, 0 rows affected (0.00 sec)

Perceba na criação da tabela acima, a coluna imagem está com o default 'semimagem.jpg', essa será a imagem padrão caso não seja inserido uma imagem.

Agora inserimos 2 produtos com imagem:

mysql> insert into `produtos`(`nome`,`imagem`) values('banana','banana.jpg'),('uva','uva.jpg');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

E 2 produtos sem imagem:

mysql> insert into `produtos`(`nome`) values('pera'),('abacate');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

Agora a consulta:

mysql> select * from produtos;
+----+---------+---------------+
| id | nome    | imagem        |
+----+---------+---------------+
|  1 | banana  | banana.jpg    |
|  2 | uva     | uva.jpg       |
|  3 | pera    | semimagem.jpg |
|  4 | abacate | semimagem.jpg |
+----+---------+---------------+
4 rows in set (0.00 sec)

Os dois últimos produtos que foram para o banco sem imagem assumiram a imagem padrão, dessa forma você nem precisa de condicional na sua view.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá João, interessante sua idéia, só que não sei o que tem meu script porque se envio o formulario sem a imagem não aparece erro, porém não salva nada no banco. Atualmente pra aliviar esse problema estou usando um Javascript obrigando o usuário a inserir uma foto, dai não da erro no banco. Se tu ver meu script acima, veras que tem um campo que insere no banco $nome_imagem, o que eu queria fazer era um "if" se por acaso não tiver imagem o campo $nome_imagem seria igual a "semimagem.jpg", porque logo abaixo ta a pasta onde ficam as imagens..

// Se não houver nenhum erro
	if (count($error) == 0) {

		// Pega extensão da imagem
		preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["name"], $ext);

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

       	// Caminho de onde ficará a imagem
       	$caminho_imagem = "fotos/" . $nome_imagem;

		// Faz o upload da imagem para seu respectivo caminho
		move_uploaded_file($foto["tmp_name"], $caminho_imagem);

		// Insere os dados no banco




		$sql = mysql_query("INSERT INTO produtos (id, titulo, genero, foto, autor, editora, preco, hora, data ) VALUES ('', '".$titulo."','".$genero."', '".$nome_imagem."','".$autor."','".$editora."', '".$preco."', NOW(), NOW() )");

		// Se os dados forem inseridos com sucesso
		if ($sql){
			echo "<script>alert('Livro inserido com sucesso!');";
			echo "location.href='inserir.php'</script>";


Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver: coloquei mais um IF no final do código, dai se a imagem for inserida ele salva e manda pra página anterior, senão executa o IF e atualiza as tabelas com o campo $foto = 'sem-imagem.jpg'.

 

Segue o codigo pra quem quiser..

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>

<body>

<?php

/*
* faz a conexao ao banco
* e seleciona a base de dados
*/
$conexao = mysql_connect("127.0.0.1", "", "")
or die ("Erro na conexão ao banco de dados.");
$db = mysql_select_db("")
or die ("Erro ao selecionar a base de dados.");


// Se o usuário clicou no botão cadastrar efetua as ações
if ($_POST['cadastrar']) {

// Recupera os dados dos campos
$nome = $_POST['nome'];
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
$foto = $_FILES['foto'];

$id = $_GET['id'];



// Se a foto estiver sido selecionada
if (!empty($foto["name"])) {

	// Largura máxima em pixels
	$largura = 1500;
	// Altura máxima em pixels
	$altura = 1700;
	// Tamanho máximo do arquivo em bytes
	$tamanho = 1500;

   	// Verifica se o arquivo é uma imagem
   	if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto["type"])){
    	   $error[1] = "Formato de imagem não suportado";
  	 	} 

	// Pega as dimensões da imagem
	$dimensoes = getimagesize($foto["tmp_name"]);

	// Verifica se a largura da imagem é maior que a largura permitida
	if($dimensoes[0] > $largura) {
		$error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels";
	}

	// Verifica se a altura da imagem é maior que a altura permitida
	if($dimensoes[1] > $altura) {
		$error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels";
	}

	// Verifica se o tamanho da imagem é maior que o tamanho permitido
	if($arquivo["size"] > $tamanho) {
  		 	$error[4] = "A imagem deve ter no máximo ".$tamanho." bytes";
	}

	// Se não houver nenhum erro
	if (count($error) == 0) {

		// Pega extensão da imagem
		preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["name"], $ext);

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

       	// Caminho de onde ficará a imagem
       	$caminho_imagem = "fotos/" . $nome_imagem;



		// Faz o upload da imagem para seu respectivo caminho
		move_uploaded_file($foto["tmp_name"], $caminho_imagem);

		// Insere os dados no banco




		$sql = mysql_query("UPDATE usuarios SET nome='$nome', usuario='$usuario', senha='$senha', foto='$nome_imagem' WHERE id='$id';");

		// Se os dados forem inseridos com sucesso
		if ($sql){
			echo "<script>alert('Usuário editado com sucesso!');";
			echo "location.href='editar.php'</script>";
		}
	}

	// Se houver mensagens de erro, exibe-as
	if (count($error) != 0) {
		foreach ($error as $erro) {
			echo $erro . "<br />";
		}
	}
}


else {



		$sql = mysql_query("UPDATE usuarios SET nome='$nome', usuario='$usuario', senha='$senha', foto='sem-imagem.jpg' WHERE id='$id';");

		// Se os dados forem inseridos com sucesso
		if ($sql){
			echo "<script>alert('Usuário editado com sucesso!');";
			echo "location.href='editar.php'</script>";
		}
	}

	// Se houver mensagens de erro, exibe-as
	if (count($error) != 0) {
		foreach ($error as $erro) {
			echo $erro . "<br />";
		}
	}
}



?>






</body>
</html>

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.