Problème avec php

Thomas MARTIN -  
Kzim27 Messages postés 16 Statut Membre -
Bonjour,

J'ai essayé de faire un page php qui compare les valeur des input cochés (pour lesquels l'attribut name="choix0[]") d'un formulaire à des valeurs stockées dans un fichier texte reponse_q0.txt .

Cependant, ça m'affiche tout le temps le même message d'erreur, et j'ai beau chercher, je ne trouve pas d'erreur.

Voici le code de la page php :

<?php
$score = 0;
if(count($_POST['choix0']) == count(file('reponse_q0.txt')))
	{
	$comparaison = True;
	
	for($i=0;$i<count($_POST['choix0']);$i++)
		{
		if(!($_POST['choix0'][$i] == file('reponse_q0.txt')[$i])){$comparaison = False};
		};
	
	if($comparaison) 
		{
		$score = $score + 1;
		};
	};

echo"Votre score est de $score !";
?>


et voici le message d'erreur :

( ! ) Parse error: syntax error, unexpected '[' in C:\Program Files\wamp\www\Info222\test.php on line 11

la ligne 11 étant celle en gras.

Si quelqu'un pouvait me dire ce qui cloche, je lui en serait très reconnaissant.
Merci d'avance.

5 réponses

  1. Kzim27 Messages postés 16 Statut Membre 4
     
    Je ne suis pas sur que tu puisse faire ca:
     file('reponse_q0.txt')[$i]

    peux être essai:
    	
    for($i=0;$i<count($_POST['choix0']);$i++)
    {
    $fileData = file('reponse_q0.txt')
    if(!($_POST['choix0'][$i] == $fileData[$i])){$comparaison = False};
    };
    
    0
  2. Thomas MARTIN
     
    Merci, mais ça marche toujours pas.

    Cette fois, il me met

    ( ! ) Parse error: syntax error, unexpected T_IF in C:\Program Files\wamp\www\Info222\test.php on line 13

    line13 désigne la même ligne, celle en gras dans mon premier message.
    0
  3. Kzim27 Messages postés 16 Statut Membre 4
     
    essaie comme ca:

    <?php
    $score = 0;
    if(count($_POST['choix0']) == count(file('reponse_q0.txt')))
    	{
    	$comparaison = True;
    	
      for($i=0;$i<count($_POST['choix0']);$i++)
      {
        $fileData = file('index.php');
        if(!($_POST['choix0'][$i] == $fileData[$i]))
        {
          $comparaison = False;
        }
      }
    	
    	if($comparaison) 
    		{
    		  $score = $score + 1;
    		}
    	}
    
    echo "Votre score est de $score !";
    ?>
    
    0
  4. Thomas
     
    Ca marche mieux, merci beaucoup, il n'y a plus de message d'erreur. Apparemment, il ne fallait pas mettre de ; après les {}, c'est bien ça ?

    Toutefois, il y a un autre problème :

    Le score était tout le temps de 0.
    En fait, on rentre dans la boucle suivante

    if(!($_POST['choix0'][$i] == $fileData[$i]))
    {
    $comparaison = False;
    }

    Pour l'indice $i = 0. Quelqu'un aurait-il une idée de pourquoi ?

    Inexplicablement, il semblerait que $fileData[0] renvoit "3 ", 3 suivi d'un espace.
    Pourtant, fileData fait référence à reponse_q0.txt, un fichier texte qui contient uniquement 3 sur la première ligne.

    Ok, en fait, il semblerait que le problème soit présent sur toutes les lignes sauf le dernière, apparemment l'espace est là à cause du retour charriot dans le fichier texte.

    En ajoutant FILE_IGNORE_NEW_LINES comme second argument à file, on peut éviter cela.

    Du coup, tout marche pour moi, merci beaucoup à vous tous !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Kzim27 Messages postés 16 Statut Membre 4
     
    L'erreur venais qu'il manquais un ; apres $fileData = file('index.php')

    Pour ton probleme je ne comprend pas bien.

    <?php
      $tableau = file('reponse_q0.txt');
      print_r($tableau ) ;
    ?>


    devrais te donner

    Array ( [0] => 3 [1] => 4 )


    essaye d'isoler les morceau de ton code pour localiser le problème.
    0