Jump to content
Fórum Script Brasil
  • 0

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


nknk
 Share

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...