Problème avec php

Fermé
Thomas MARTIN - 18 mai 2011 à 19:30
Kzim27 Messages postés 16 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 19 juillet 2011 - 20 mai 2011 à 19:18
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.


A voir également:

5 réponses

Kzim27 Messages postés 16 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 19 juillet 2011 4
18 mai 2011 à 19:47
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
Thomas MARTIN
18 mai 2011 à 20:00
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
Kzim27 Messages postés 16 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 19 juillet 2011 4
19 mai 2011 à 16:11
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kzim27 Messages postés 16 Date d'inscription mardi 17 mai 2011 Statut Membre Dernière intervention 19 juillet 2011 4
20 mai 2011 à 19:18
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