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  
golfe

PHP e as Forms

Recommended Posts

golfe

Pessoal estou a fazer uma cena em php e numa página onde tenho várias input text forms e input checkbox forms. Como não podia deixar de ser cada input text tem um nome assciado e que têm de ser diferentes, escolhi então os seguintes nomes res1, res2, ...até res18. Quis fazer um fazer um teste para verificar se o utilizador introduziu dados em todos os input texts.

Relativamente às text forms fiz o seguinte:

<?php
for ( $counter = 1; $counter <= 18; $counter += 1) {
    
        if (!$res[$counter]|| !$putt[$counter]){
        echo 'Preencha os dados todos. É obrigatório preencher todos os resultados';
        exit;
        }
    }
?>

Algo aqui está mal em termos de código pois recebo mensagem de erro. Tem de certeza relação com a forma de introduzir o contador na variável $res. Na verdade não tenho nenhuma variável $res, somente as $ res1, $res2, ...até $res18. Será que é possivel fazer o que fiz?

Outro problema pende-se com as Checkbox's, nas respectivas forms definias da seguinte forma

<input type="checkbox" value="1" name="Fairw1">

Neste caso o utilizador pode ou não fazer check, no caso de optar por clicar no checkbox o programa corre bem mas no caso de não o fazer recebo mensagem de erro. Achava eu que no caso de não se clicar na checkbox que o seu valor seria 0, só passaria a 1 se fosse seleccionada. Pelos visto não :wallbash:

Recebo esta resposta que está relacionada com a checkbox.

"Notice: Undefined index: fairw1 in C:\wamp\www\golf_stats\gravarresultado.php on line 38 "Será que me podem ajudar?

Share this post


Link to post
Share on other sites
cyclop

if isset antes de fazers, btw... tenta colocar no html no name="nomequequeres[]" depois é so foreach de $_POST['nomequequeres']


"Quando eu for grande quero ser como o Celso"

Share this post


Link to post
Share on other sites
jcfr

Pessoal estou a fazer uma cena em php e numa página onde tenho várias input text forms e input checkbox forms. Como não podia deixar de ser cada input text tem um nome assciado e que têm de ser diferentes, escolhi então os seguintes nomes res1, res2, ...até res18. Quis fazer um fazer um teste para verificar se o utilizador introduziu dados em todos os input texts.

Relativamente às text forms fiz o seguinte:

<?php
for ( $counter = 1; $counter <= 18; $counter += 1) {
    
        if (!$res[$counter]|| !$putt[$counter]){
        echo 'Preencha os dados todos. É obrigatório preencher todos os resultados';
        exit;
        }
    }
?>

Algo aqui está mal em termos de código pois recebo mensagem de erro. Tem de certeza relação com a forma de introduzir o contador na variável $res. Na verdade não tenho nenhuma variável $res, somente as $ res1, $res2, ...até $res18. Será que é possivel fazer o que fiz?

Outro problema pende-se com as Checkbox's, nas respectivas forms definias da seguinte forma

<input type="checkbox" value="1" name="Fairw1">

Neste caso o utilizador pode ou não fazer check, no caso de optar por clicar no checkbox o programa corre bem mas no caso de não o fazer recebo mensagem de erro. Achava eu que no caso de não se clicar na checkbox que o seu valor seria 0, só passaria a 1 se fosse seleccionada. Pelos visto não :wallbash:

Recebo esta resposta que está relacionada com a checkbox.

"Notice: Undefined index: fairw1 in C:\wamp\www\golf_stats\gravarresultado.php on line 38 "Será que me podem ajudar?

não vejo nenhuma parte do código que apresentast que esteja a receber as variáveis que á partida deves ter enviado por post:

mas supondo que o estás a fazer e simplesmente não apresentast.

no caso da check box retira o value=1, não tenho certeza mas penso que teres o value não faz diferença porque o valor que envia no caso de estar seleccionada é on e não 1 ou 0.

então para receberes a variável e ver se foi seleccionada ou não faz o seguinte:

if($_POST['Fairw1']=="on"){
echo "check box seleccionada";
}else{
echo "check box não seleccionada";
}

quanto aos input's text supondo que estás a receber as variáveis de uma forma similar a esta:

for($i=0; $i<18; $i++){
$var="res".$i;
$res[$i]=$POST['$var'];
}

podes incluir logo no for anterior uma verificação se foi introduzido algum valor ou podes criar mais um for ou while ou o que preferires para fazer a verificação, para isso podes utilizar algo do genero:

if(($_POST['res[$i]']!="")&&($_POST['res[$i]']!=NULL)){
echo "texto preenchido";
}else{
echo "não preencheu o texto";
}

provavelmente não é a melhor forma de o fazeres mas funciona, não sou especialista trabalho nisto a pouco tempo ainda estou a aprender mas sei que isto funciona.

outra coisa, pela experiencia que tenho o isset apenas verifica se a variável está a ser enviada ou não e como estás a usar uma form a variável vai sempre ser enviada, no caso de não ser seleccionada ou no caso dos text's nao ter nada escrito envia a variável na mesma mas sem nada mas o isset assume como variável activa e no caso não te serve de nada, tens mesmo de verificar o conteudo...

desculpa se estiver a dizer alguma calinada de programação mas pelo menos quando tentei usar o isset com as forms não me servia de nada...

espero que tenha sido util

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.