Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

fo_11

Duvida usar post

Mensagens Recomendadas

fo_11

O utilizador preenche um formulario e envia-o.

O formulario é muito simples pois é apenas para aprender a implementar o post em php. No formulário o utilizador pode escolher meses do ano e um ano. Essa escolha é feita apartir de uma droplist que é implementada pela tag <select>.

Eu estou com algumas dificuldades em apresesentar o resultado apos a submissao usando o post no php,por outras palavras, é apresentado o texto inicial mas não apresenta o mes nem o ano selectionado pelo utilizador.

Aqui está o parte do formulario:

?php  

$MESES=array('Fev','Mar','Mai','Jun','Jul','Agost','Setemb','Out','Nov','Dez');
for($i=0;$i<11;$i++)	
  echo"<option value='$MESES[$i]'>$MESES[$i]";
?>
	</select><br/>

Ano:<select name="anos">
    <option selected value='2009'> 2009
<?php
for($anos=2009;1900<=$anos;$anos--)
   echo "<option value='$anos'>$anos";
?>
</select>

Aqui está o meu script em php que irá mostar o conteudo após a submissao:

Mes seleccionado=>
<?php  
  echo $_POST['meses'];
?><br/>

Ano seleccionado==>
<?php
echo $_POST['anos'];
?>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
Mês:<select name="mes">
<?php
$MESES=array('Fev','Mar','Mai','Jun','Jul','Agost','Setemb','Out','Nov','Dez');
foreach($MESES as $mes)   
  echo"<option value='".$mes."'>'".$mes."'</option>";
?>
</select><br/>
               
Ano:<select name="ano">
<?php

for($ano=2009;$ano>=1900;$ano--)
   $ano == 2009 ? echo "<option selected value='".$ano."'>$ano</option>" : echo "<option value='".$ano."'>$ano</option>";
?>
</select>
</form>

<?php
if ($_POST) {
echo "Mes seleccionado => ".$_POST['mes']."<br/>";
echo "Ano seleccionado => ".$_POST['ano'];
}

?>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
mjamado

Falta código no segmento de cima... Onde está o form correspondente? Não fechas as options? Escreves duas vezes 2009 na de baixo?

Depois disto tudo, vamos então às dúvidas.

Edit: o código do yoda está, aparentemente, correcto.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
fo_11

Com muita paciencia e calma consegui dar a volta ao problema. Não podemos colocar no inicio enctype="text/plain", se não a informação fica codificada (penso que seja a função do enctype) e o outro ficheiro deixa de conseguir ler o que foi feito no formulário. Mas fica aqui o formulário por completo para não existir mais dúvidas e para ajudar quem estiver com as mesmas duvidas que eu. A outra parte ficou igual.

Em relação à tag option não é necessário fecha-la. Eu não estou à atirar para o ar, li isso num livro (LINGUAGENS WEB).

<html>
<head><title>FORMULARIO</title></head>

<body>
<p>Escolha um mes e um ano:</p>
<form action="dados.php" method="post" >

Mes:<select name="meses">
  <option selected value='Jan'>Jan
<?php  

$MESES=array('Fev','Mar','Mai','Jun','Jul','Agost','Setemb','Out','Nov','Dez');
for($i=0;$i<11;$i++)	
  echo"<option value='$MESES[$i]'>$MESES[$i]";
?>
	</select><br/>

Ano:<select name="anos">
    <option selected value='2009'> 2009
<?php
for($anos=2008;1900<=$anos;$anos--)
   echo "<option value='$anos'>$anos";
?>
</select>

<p><input type="submit" value="Enviar">
   <input type="reset" value="Limpar">
</form>



</body>
</html>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Pois, dessa forma não é correcto. Basta passar o HTML disso a um verificar, por exemplo

http://validator.w3.org/

que ele dá logo erros. Talvez estejas a fazer confusão com <option value="qqcoisa" />, que esse sim, já tema tag de fecho incluída, e não precisa de fazer </option>. No entanto, o exemplo que dei nem sequer sei se será válido ou não, nunca usei essa forma em particular, apenas queria ilustrar o caso geral.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Não, o que eu disse não está certo. Testei agora, e isso não funciona. Por isso, deves fazer da mesma forma que fazias, mas acrescentar a tag de fecho, ou seja, <option value="valor">Texto</option>

Isso é possível que funcione, porque os browsers fazem sempre um esforço para tentar apresentar tudo correctamente, mas se puder ser feito de maneira correcta, melhor.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

Não, o que eu disse não está certo. Testei agora, e isso não funciona. Por isso, deves fazer da mesma forma que fazias, mas acrescentar a tag de fecho, ou seja, <option value="valor">Texto</option>

Isso é possível que funcione, porque os browsers fazem sempre um esforço para tentar apresentar tudo correctamente, mas se puder ser feito de maneira correcta, melhor.

Functionar funciona, de várias maneiras, mas se for para seguir as regras não vai passar na validação. Há várias outras tags que os browsers aceitam se não forem fechadas segundo as regras, para conveniência do utilizador final, mas não passam na validação.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.