Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

campo imagem obrigatório

15-05-2009 10:11

Olá! Vim deste post: http://www.codigosnaweb.com/forum/Grava ... 5_358.html. Parte do que eu estou usando para validar a inserção de imagem é esta:

// Prepara a variável do arquivo $arquivo = isset($_FILES["ImagemLogotipoRevenda"]) ? $_FILES["ImagemLogotipoRevenda"] : FALSE; // Formulário postado... executa as ações if($arquivo) { // Verifica se o mime-type do arquivo é de imagem if($arquivo["type"]!="image/gif" && $arquivo["type"]!="image/jpeg" && $arquivo["type"]!="application/x-shockwave-flash") { $erro[] = "<table align=center width=\"468\" height=\"30\" cellspacing=0 cellpadding=5 border=0><tr><td align=center class=MessageAlert><img src=\"../images/warning.gif\">&nbsp;&nbsp;Formato inválido ($arquivo[type]): deve ser GIF, JPEG ou SWF!</td></tr></table> <table cellspacing=0 cellpadding=0 border=0><tr><td height=\"2\"></td></tr></table>"; }

Funciona adequadamente. Pretendo tornar a inserção de imagem obrigatória, mas não estou conseguindo. Já tentei de várias formas, inclusive com if($arquivo == ' '), mas não consegui. Sem tal tentativa, se o campo de inserção está vazio, é acusado o erro padrão, mas assim: "Formato inválido (application/octet-stream): deve ser GIF, JPEG ou SWF!". Ou seja, onde apareceria a referência à imagem inadequada, entre parêntesis, aparece application/octec-stream". Vi que esse octec-stream tem a ver com o mime-type, mas não sei se isso está correto ou é suficiente. Eu gostaria de criar uma mensagem de validação a parte dizendo que o campo é obrigatório caso se tente enviar o formulário sem preenchê-lo.Tentei fazer isto, antes da validação referida acima:

if($_POST['ImagemLogotipoRevenda'] == '') { $MensagemErroLogotipoObrigatorio .= "<table width=\"468\" align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td height=\"2\"></td></tr><tr><td width=\"100%\" height=\"30\" align=\"center\" class=\"MessageAlert\"><img src=\"../images/warning.gif\">&nbsp;Você deve inserir um logotipo!</td></tr></table>"; }

Mas as mensagens da outra validação aparecem junto com esta mensagem de erro; bem como se, por exemplo, o arquivo inserido não correspondente ao aceito, esta mensagem também aparece juntamente com a do outro erro. Dêem-me um help, por favor. Grato.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

campo imagem obrigatório

15-05-2009 10:29

Seria mostrar a mensagem que o arquivo não foi enviado, e parar o restante da execução? Se for isso, após a mensagem dá um exit.

echo "não veio a imagem...
exit;
}
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

campo imagem obrigatório

15-05-2009 10:41

É isso. Mas como faço a verificação de que o campo está vazio, para aparecer a mensagem? Tomando por base isto:
$arquivo = isset($_FILES["ImagemLogotipoRevenda"]) ? $_FILES["ImagemLogotipoRevenda"] : FALSE;

Tentei if($arquivo == '') - mensagem - e não deu certo.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

campo imagem obrigatório

15-05-2009 11:26

A lógica parece OK, dá um echo logo depois de ter definido arquivo, e venha o que vem.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

campo imagem obrigatório

15-05-2009 11:44

Fiz assim, mas a validação é ignorada:
if($arquivo =="") { $MensagemErroLogotipoObrigatorio .= "<table width=\"468\" align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td height=\"2\"></td></tr><tr><td width=\"100%\" height=\"30\" align=\"center\" class=\"MessageAlert\"><img src=\"../images/warning.gif\">&nbsp;Você deve inserir um logotipo!</td></tr></table>"; }

Aparece a validação do mime-type, com esta mensagem:(application/octet-stream).
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

campo imagem obrigatório

15-05-2009 11:52

Antes desse if, já tentou:
echo $arquivo;

O que vem?

Esse valor que aparece é quando tenta enviar um aplicativo ao invés da imagem, correto?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

campo imagem obrigatório

15-05-2009 12:12

Não havia entrado na minha cabeça o tal do dar o echo. Eu o fiz agora, e não deu nada. Apareceu a validação conforme referido, ou seja, com a mensagem application/octet-stream. Na verdade, penso que não há nada na $arquivo, por isso o echo resulta vazio. A lógica seria, como você referiu, $arquivo == "" (se isso estiver correto) imprime mensagem. Né?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

campo imagem obrigatório

15-05-2009 12:43

Aparentemente ou você não tem o input file com o name: ImagemLogotipoRevenda ou seu form action não tem o:
enctype="multipart/form-data"
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

campo imagem obrigatório

15-05-2009 13:55

O form está assim:
<form method=\"post\" action=\"CadastrarLogotipoAnuncianteRevendaVeiculo_Cliente.php\" enctype=\"multipart/form-data\" name=\"cadastro\" id=\"cadastro\">

E o input está assim:
<input type=file name=\"ImagemLogotipoRevenda\">

Estaria, em tese, ok. Aliás, o funcionamento está ok, inclusive validando o mime-type. O problema está na validação do campo vazio.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

campo imagem obrigatório

15-05-2009 14:09

Adiciona o value no input file e tenta validar pelo nome, não como arquivo

if($ImagemLogotipoRevenda=="") { echo "campo vazio"; }

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

campo imagem obrigatório

15-05-2009 14:32

Coloquei acho que como você falou. Com o value e com várias formas de $ImagemLogotipoRevenda. Não acusou erro. Apareceu direto a validação do mime-type, com a mensagem de application/octet-stream. Aliás, ontem eu encontrei uma validação de mime-type para diversos arquivos, inclusive áudio. Se interessar, depois envio para você dar uma olhada. Abaixo, as tentativas, mas ainda sem sucesso:
$ImagemLogotipoRevenda = $arquivo; //$ImagemLogotipoRevenda == $arquivo; //$ImagemLogotipoRevenda = $_POST['ImagemLogotipoRevenda']; //if($ImagemLogotipoRevenda=="") { echo "<table width=\"468\" align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td height=\"2\"></td></tr><tr><td width=\"100%\" height=\"30\" align=\"center\" class=\"MessageAlert\"><img src=\"../images/warning.gif\">&nbsp;Você deve inserir um logotipo!</td></tr></table>"; //echo "campo vazio"; }

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

campo imagem obrigatório

15-05-2009 15:50

Segue uma validação de campo vazio ou preenchido para input file para você usar como base

<form method="POST" action="" enctype="multipart/form-data" name="cadastro" id="cadastro"> <input type="file" name="ImagemLogotipoRevenda" value=""> <input type="submit" name="envia"> </form> <?php if($_POST['envia']) { if($_FILES["ImagemLogotipoRevenda"]["name"]=="") { echo "campo vazio"; } else { echo $_FILES["ImagemLogotipoRevenda"]["name"]; } } ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

campo imagem obrigatório

15-05-2009 17:30

Gol, de novo. Você é muito bom. Agora vou adaptar ao meu código. Coloquei um exit, e ficou assim:
if($_FILES["ImagemLogotipoRevenda"]["name"]=="") { echo "campo vazio"; exit; }

Eu ia até deixar de lado para tentar novamente na versão 2.0 do site. Mas deu certo. Obrigado.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17735
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

campo imagem obrigatório

15-05-2009 17:40

Boa
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1309
Sexo: Masculino

campo imagem obrigatório

15-05-2009 18:21

Deu certo. Ao menos acho que deu, em meu código. Vedei o tal do application/octet-stream, e agora, quando não inserida a imagem, aparece apenas a mensagem sobre esse erro. Se há outros erros, inserida a imagem, aparecem as outras mensagens normalmente, mas isoladas.
if($arquivo["type"]=="application/octet-stream" && $_FILES["ImagemLogotipoRevenda"]["name"]=="") { $erro[] = "<table width=\"468\" align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td width=\"100%\" height=\"30\" align=\"center\" class=\"MessageAlert\"><img src=\"../images/warning.gif\">&nbsp;Você deve inserir um logotipo!</td></tr></table> <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td height=\"2\"></td></tr></table>"; }

Obrigado, novamente.
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado