Ir para conteúdo
Fórum Script Brasil
  • 0

Imagem Padrão P/ Usuários Que Não Enviam Fotos


nknk

Pergunta

Eu tenho um cadastro que usa foto:

if(!move_uploaded_file($file, $dest))
{echo "<div align=center><font size=1 face=verdana>Não foi possível fazer upload! Arquivo inválido.<br><br><a href=java script:history.back);>Voltar</a></font></div>";}

Quando eu não adiciono arquivo aparece essa mensagem. Eu gostaria que quando o não tivesse foto(quando não adicionassse), aparecesse uma foto padrão (tipo sem foto) ou seja, na tabela sql estaria gravado um arquivo padrão para envios sem fotos.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

bem, vamos ver se eu intendi!

você não vai deixar o campo de upload como obrigatório. Intão, com isso, alguns usuarios ficarão com essa coluna no BD em branco, e quando você puxa a informação do BD, quer jogar uma imagem padrão. é isso??

bem, se for isso, é simples...

esse script de upload funciona certinho..use ele!

//Todos os campos do seu form pegos por $_POST e o de fotos pego por $_FILES
$campo = $_POST['nome_do_sampo']; //etc..
$foto=$_FILES['foto']; //supondo que o campo de upload esteja com name="foto"
$data = date("dmY"); 
$hora = date("Hi"); //usaremos essas variaveis para diferenciar o nome das imagens, para que não ocorra de ter nomes repitidos, o que causará substituição da imagem.


include "../conn/conn.php"; //arquivo de conexão com o BD
if($foto['name'] != ""){ //verificando se o campo foto foi preenchido. se foi, irá fazer o upload
$nomefoto=md5($foto['name']); // criptografando o nome da imagem em md5
$new_foto="$nomefoto$data$hora.jpg"; //mudando o nome do arquivo para não correr o risco de haver substituição. Com as variaveis $data e $hora no nome do arquivo, será praticamente impossivel obter um nome igual para duas imagens.
$caminho="imagens/diretorio_para_onde_vão_as_imagens/".$new_foto;
copy($foto['tmp_name'], $caminho); //fazendo o upload da imagem pra pasta especificada
}else{ //se o campo não foi preenchido, ele definirá a $caminho como vazio.
$caminho="";
}

$sql="INSERT INTO `tabela` ( `imagem` ) VALUES ('$caminho')"; //sua consulta de inclusão de dados
$exec=mysql_query($sql) or die("Erro ao cadastrar destaque!");

    echo "<script>window.alert('Mensagem de Sucesso!')</script>";
    echo "<script>window.location='?variavel=pagina'</script>";

?>
depois, crie uma imagem padrão escrito, por exemplo..."Sem Foto" e a salve no seu diretório de imagens. após isso, quando no arquivo que vai mostrar os dados do BD, faça a consulta sql pra mostrar a imagem pro usuario:
<?
$sql="Select * from `tabela` e o restante da sua pesquisa.";
$exec=mysql_query($sql);

$linha=mysql_fetch_assoc($exec);
$imagem=$linha['nome_do_campo_da_imagem_no_bd'];
// e o restante das colunas do seu bd.
?>
aí, quando for mostrar a imagem, use assim:
<?

if(!$imagem){ //ou também pode usar if($imagem == "")
echo '<img src="caminho da imagem padrão da pasta de imagens do seu site" width="" height="" border="0">';
}else{
echo '<img src="'.$imagem.'" width="" height="" border="0">';
?>

Espero que possa ter te ajudado!!

Link para o comentário
Compartilhar em outros sites

  • 0

Queria agradecer a quem respondeu o tópico, porque tem alguns foruns que deixam a desejar, principalmente na forma de ajudar. Eu vou postar o script e gostaria que alguém me ajudasse aprimorando -o, pois ele pode servir como um script geral para upload com restrições, eu vejo que existem alguns script de upload mas faltam restrições, eu vou testar o script acima /\, mas primeiro eu preciso adequar a esse que estou trabalhndo. Eu sou leigo em php, mas conheço um pouco de programação.

È um script de upload de imagem,existem mais campos mas vou deixar so dois para exemplicar. Ele renomeia o nome do arquivo com precisão de data e hora a fim de evitar nomes iguais visto que muitas cameras guardam nomes iguais. Eu não quis inserir o ip do usuario junto da data e hora na renomeação do arquivo porque o visitante pode clicar em propriedades e vê o nome da imagem com o ip do usuario, o que pode causar estrago.

nome do arquivo: enviar.php (é o endereço que direcionado ao clicar em enviar os dados do formulário)

<?
require("conexao.php");

$nome = $_POST['nome'];
$email = $_POST['email'];

// Ele verifica se já existe algum com o mesmo nome

$existe = mysql_query("SELECT * FROM tabela WHERE nome = '$nome'");
$contar = mysql_num_rows($existe);

if($contar > 0) {echo "<div align=center><b><font size=2 face=verdana><br><br>Já existe um registrado com o nome: <b>$nome</b></font></div>";} 

    else {
  
                //Variável que guardará o local onde o arquivo será enviado - Arquivo I
        
        $imgs = "imgs";
        $dat = date("dmy_His"); 
        
        // Renomeia com Data e Hora e insere no destino
            
        $file_name = $dat."_".$file_name;
        $dest = $imgs."/".$file_name;
        
    
        //Arquivos não enviados ficarão registrado como semfoto.jpg, ou seja, uma imagem escrita sem foto
                
           if empty($file)) { $semfoto = "imgs/semfoto.jpg"; 
                                    
       mysql_query("INSERT INTO tabela (img) VALUES ('$semfoto')");
                                  
    else { 
                            
    //Checa o tipo do arquivo (Essa parte eu copiei de um script, mas não sei se esta certo), eu so gostaria que fosse enviado gif, png, jpeg, jpg
                                    
    if(($get["mime"] != "image/jpeg") AND ($get["mime"] != "image/gif") AND ($get["mime"] != "image/png")) {
    echo "<span style=\"color: white; border: solid 1px; background: red;\">Esse foto não é uma imagem valida</span>";}
                                                                
    // Checa o tamanho 1024k b (copiei também)                                                                
                                    
        $file = $_FILES['file']['name'];
          $file_size = $_FILES['file']['size'];
        $max_file_size = 10240000000    // 1mb
                                    
        if ($file_size > $max_file_size){
        echo "<center>Arquivo muito grande</center>";
        echo '<br><br><a href=java script:history.back();>Voltar</a>';}
                                    
        if (!move_uploaded_file($file, $dest) {

        $img_enviada = "imgs/$file_name";  
                   $sql = "INSERT INTO tabela (img) VALUES ('$img_enviada')"; 
            $sql = "INSERT INTO tabela (nome, email) VALUES ('$email', '$nome')"; }
    
    if(mysql_query($sql)) 
    
    {echo "<div align=center><font size=1 face=verdana><br><br>foi possivel cadastrar!</font></div>    ";}
    
    else{echo "<div align=center><font size=1 face=verdana><br><br>Não foi possivel cadastrar!</font></div>";}
    
      
    }
?>
<?
$sql="Select * from `tabela` e o restante da sua pesquisa.";
$exec=mysql_query($sql);

$linha=mysql_fetch_assoc($exec);
$imagem=$linha['nome_do_campo_da_imagem_no_bd'];

// e o restante das colunas do seu bd.
?>

<?

if(!$imagem){ //ou também pode usar if($imagem == "")
echo '<img src="caminho da imagem padrão da pasta de imagens do seu site" width="" height="" border="0">';
}else{
echo '<img src="'.$imagem.'" width="" height="" border="0">';
?>

] Não tinha pensado nesse metodo, mas você não acha mais seguro esse daqui
if empty($file)) { $semfoto = "imgs/semfoto.jpg";

mysql_query("INSERT INTO tabela (img) VALUES ('$semfoto')");

ele já insere o caminho da imagem na tabela logo no cadastro feito pelo o 'usuario registrado'

Eu prefiro esse metódo porque eu vou ter vários tipos de listagem e ai pra cada listagem eu terei que colocar a consulta no sql

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...