Compare results

0

Dear colleagues.

I am bringing two questions from the Mysql database as follows:

....
Qual sua idade? <input type="text" name="Perguntas[]" value="<?php echo $jmPerguntas->Perguntas; ?>">
Você tem o segundo grau? <input type="text" name="Perguntas[]" value="<?php echo $jmPerguntas->Perguntas; ?>">
Especifique:
<textarea name="Especifique[]" style="width: 200px; height: 80px"></textarea>
    .....

And I get the results with PHP like this:

for($i = 0; $i < count($_POST['Perguntas']); $i++){

if($_POST['Perguntas'][$i] == 'Você tem o segundo grau?'){
   echo "aqui";   
}else{
   echo "não aqui";
}

} // fim do for()

The only problem is that the snippet:

if($_POST['Perguntas'][$i] == 'Você tem o segundo grau?'){
   echo "aqui";   
}else{
   echo "não aqui";
}

You're giving " not here ", even the question being ' Do you have high school? '.

Would anyone know to tell me what I'm doing wrong?

Thank you!

    
asked by anonymous 15.07.2015 / 22:44

2 answers

3

I made the following example: See if it helps.

PHP code

<?
    if(isset($_POST['pergunta'])){

            if(!empty($_POST['pergunta'][0])){
               echo "<strong>Idade:</strong> ".$_POST['pergunta'][0]."<br>";   
            }

            if(!empty($_POST['pergunta'][1])){
               echo "<strong>Segundo Grau:</strong> ".$_POST['pergunta'][1]."<br>";   
            }

            if(!empty($_POST['especifique'])){
               echo "<strong>Especificação:</strong> ".$_POST['especifique']."<br><br><br>";   
            }

    }
?>

HTML code

<html>
    <meta charset="utf-8">
    <form action="<? echo $PHP_SELF; ?>" name="perguntas" method="post" enctype="multipart/form-data">

        Qual sua idade? <br>
        <input type="text" name="pergunta[]" value="<? if(isset($_POST['pergunta'])){ echo $_POST['pergunta'][0]; } ?>">
        <br><br>
        Você tem o segundo grau? <br>
        <input type="text" name="pergunta[]" value="<? if(isset($_POST['pergunta'])){ echo $_POST['pergunta'][1]; } ?>">
        <br><br>
        Especifique:<br>
        <textarea name="especifique" style="width: 200px; height: 80px"><? if(isset($_POST['especifique'])){ echo $_POST['especifique']; } ?></textarea><br><Br>
        <input type="submit" value="enviar">
    </form>
</html>

In this way, we have the array question that in turn, in array 0, is the first question, if answered, returns on the screen .. so continue with the other fields.

    
15.07.2015 / 23:48
3

I've created a simple code for you to understand what happens.

<?php

if($_POST){
    for($i = 0; $i < count($_POST['Perguntas']); $i++){

        if($_POST['Perguntas'][$i] == 'Você tem o segundo grau?'){
            echo "aqui";   
        }else{
            echo "não aqui";
        }

    } // fim do for()
}

? >

               example          

</head>

<body>

    <form method="POST" action="index.php" >
        <label>Qual sua idade?</label> <input type="text" name="Perguntas[]" value="Qual sua idade?" >
        <br/>
        <label>Você tem o segundo grau? </label><input type="text" name="Perguntas[]" value="Você tem o segundo grau?" >
        <input type="submit" value="Enviar">
    </form>


</body>

The reason why he shows this message in the second question is in the comparison that his PHP is scheduled to do. Notice how your POST variable is populated during the submit:

    array (size=2)
  0 => string 'Qual sua idade?' (length=15)
  1 => string 'Você tem o segundo grau?' (length=25)
não aqui
array (size=2)
  0 => string 'Qual sua idade?' (length=15)
  1 => string 'Você tem o segundo grau?' (length=25)
aqui

Note that in its first iteration it compares if: 'Do you have high school? == 'How old are you?' So the answer is not here.

Finally in the second iteration the result is expected.

There's no such thing as a bug in PHP.

    
16.07.2015 / 01:47