Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
fo_11

Duvida usar post

Recommended Posts

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'];
?>

Share this post


Link to post
Share on other 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'];
}

?>

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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>

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites
fo_11

ok, não sabia disso...

Então basta colocar o tag de fecho  da option e fica tudo correcto, certo?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.