bonjour,

j aimerai que pour les dix questions avec deux choix, que quand on fait correction et bien une croix noir pour les bonnes réponses et une croix rouge pour les mauvaises en occurrence j ai que des croix rouge, apres plusieurs jours passé a comprendre mon erreur, je me retrouve sans réponses...je pense qu il me manque une condition, mais ou et comment?
echo'<table cellspacing="0" cellpadding="0" border="1" bordercolor="noir" width="80%" align="center">';
echo'<tr><td style="border-top:1px solid #FFF;border-left:1px solid #FFF;"></td><td style="background:rgba(246,168,192,0.3);text-align:center;padding:.5em;">[i]</td><td style="background:rgba(203,157,190,0.3);text-align:center;padding:.5em;">[é]</td></tr>';
foreach($reponses as $cle => $reponse)
{
if (isset($_POST['correction']))
{
$clic = $_POST[$cle];
$errors = array();
if (empty($clic) && empty($clic) !== $reponse['reponse'])
{
$msg = '<p style="text-align:center;">vous n\'avez pas rempli tous les champs, veuillez recommençer!</p>';
echo $msg;
}
else
if ($clic == $reponse['reponse'])
{
$point[$cle] = htmlspecialchars($clic);
echo'<tr>';
echo'<td width="5%">';
echo '<button class="button_audio" onclick="playVid(\'audio_'.$cle.'\')" type="button" value="' . $reponse['mp3'] . '"></button>';
			echo '<audio id="audio_'.$cle.'">';
			echo '<source src="' . $reponse['mp3'] .'" type="audio/mp3">';
			echo '<p>Votre navigateur ne supporte pas le format audio.</p>';
			echo '</audio>';
echo'</td>';
echo'<td style="text-align:center;" width="20%"><img src="../img/croix-noir.jpg" alt="croix-noir" width="54" height="54" /></td>';
echo'<td style="text-align:center;" width="20%"><img src="../img/croix-noir.jpg" alt="croix-noir" width="54" height="54" /></td>';
echo'</tr>';
}
else
if ($clic !== $reponse['reponse'])
{
$errors[$cle] = htmlspecialchars($clic);
echo'<tr>';
echo'<td width="5%">';
echo '<button class="button_audio" onclick="playVid(\'audio_'.$cle.'\')" type="button" value="' . $reponse['mp3'] . '"></button>';
			echo '<audio id="audio_'.$cle.'">';
			echo '<source src="' . $reponse['mp3'] .'" type="audio/mp3">';
			echo '<p>Votre navigateur ne supporte pas le format audio.</p>';
			echo '</audio>';
echo'</td>';
echo'<td style="text-align:center;" width="20%"><img src="../img/croix-rouge.jpg" alt="croix-noir" width="54" height="54" /></td>';
echo'<td style="text-align:center;" width="20%"><img src="../img/croix-rouge.jpg" alt="croix-noir" width="54" height="54" /></td>';
echo'</tr>';
}
}
}
echo'</table>';

merci pour les DEVS qui prendrons le temps de regarder et de m expliquer mon erreur...[/i]
Bonjour !

Prendre le temps de regarder... oui... comprendre... euh...

boni75 a écrit :

j ai que des croix rouge, apres plusieurs jours passé a comprendre mon erreur, je me retrouve sans réponses...je pense qu il me manque une condition, mais ou et comment?


Au vu du résultat, oui, ça a l'air d'être un problème de conditions...

A votre place, j'utiliserais var_dump() sur les variables qui sont testées dans les conditions... histoire de voir ce qu'elles vont faire.

Pour les conditions avec des opérateurs booléens (&&, ||...), je ne suis pas sure que cela fonctionne de la même manière en PHP qu'en Javascript à savoir que les conditions sont évaluées de gauche à droite... Smiley sweatdrop

Voilà. Bon courage !

Smiley smile
cela me donne ceci que sur la différence, mais pas sur l égalité

string '[é]' (length=4)

string '[é]' (length=4)

string '' (length=3)

string '[i]' (length=3)

string '[é]' (length=4)

string '[é]' (length=4)

string '[i]' (length=3)

string '[i]' (length=3)

string '[é]' (length=4)

string '[é]' (length=4)

un peu plus d info merci
[/i][/i][/i]
Tout dépend de ce que vous testez et dans quel but...

Si j'ai bien compris, alors que vous devez avoir des réponses positives ou négatives, vous n'avez que des réponses négatives...

Si vos conditions font bien ce que vous leur demandez (et il faut pouvoir vérifier), c'est qu'il y a une condition qui n'est jamais remplie, la condition des réponses positives... Si elle est bien écrite, le problème se situe au niveau des variables... qui ne contiennent pas ce que vous voulez.

A votre place, je regarderais dans cet ordre,
- voir d'abord si le programme passe dans la partie concernant les réponses positives quand la réponse est positive ;
- si ce n'est pas le cas, tester la condition de cette partie du programme.

var_dump est juste là pour savoir ce qu'il y a dans les variables... il permet aussi de tester les conditions...
Smiley smile
merci pour les explications, je comprend mieux mais dans le cas ou ma variable tester est $clic = $_POST[$cle] et que les reponse son dans un tableau d ou je recuperre les valeurs par une boucle foreach, je ne vois pas ou est le probleme?
$reponses = array(
'chx' => array(
'reponse' => 'é',
'mot' => 'Une télé',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/tele.mp3'
) ,
'chx_1' => array(
'reponse' => 'é',
'mot' => 'Laver',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/laver.mp3'
) ,
'chx_2' => array(
'reponse' => 'i',
'mot' => 'La vie',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/vie.mp3'
) ,
'chx_3' => array(
'reponse' => 'i',
'mot' => 'Difficile',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/difficile.mp3'
) ,
'chx_4' => array(
'reponse' => 'i',
'mot' => 'Une fuite',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/fuite.mp3'
) ,
'chx_5' => array(
'reponse' => 'i',
'mot' => 'Un lit',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/lit.mp3'
) ,
'chx_6' => array(
'reponse' => 'é',
'mot' => 'Démarrer',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/demarrer.mp3'
) ,
'chx_7' => array(
'reponse' => 'é',
'mot' => 'propreté',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/propre.mp3'
) ,
'chx_8' => array(
'reponse' => 'é',
'mot' => 'Déménager',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/demenager.mp3'
) ,
'chx_9' => array(
'reponse' => 'i',
'mot' => 'Une visite',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/visite.mp3'
)
);

et que je veut juste recuperrer 'reponse'.
pour mieux comprendre voici mon code...
  <?php 
$reponses = array(
'chx' => array(
'reponse' => 'é',
'mot' => 'Une télé',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/tele.mp3'
) ,
'chx_1' => array(
'reponse' => 'é',
'mot' => 'Laver',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/laver.mp3'
) ,
'chx_2' => array(
'reponse' => 'i',
'mot' => 'La vie',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/vie.mp3'
) ,
'chx_3' => array(
'reponse' => 'i',
'mot' => 'Difficile',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/difficile.mp3'
) ,
'chx_4' => array(
'reponse' => 'i',
'mot' => 'Une fuite',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/fuite.mp3'
) ,
'chx_5' => array(
'reponse' => 'i',
'mot' => 'Un lit',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/lit.mp3'
) ,
'chx_6' => array(
'reponse' => 'é',
'mot' => 'Démarrer',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/demarrer.mp3'
) ,
'chx_7' => array(
'reponse' => 'é',
'mot' => 'propreté',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/propre.mp3'
) ,
'chx_8' => array(
'reponse' => 'é',
'mot' => 'Déménager',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/demenager.mp3'
) ,
'chx_9' => array(
'reponse' => 'i',
'mot' => 'Une visite',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/visite.mp3'
)
);
$choix = array(
 '[i]' => '[i]',
 '[é]' => '[é]'

);
$errors = array();
$point = array();
$i = 1.25;
$si = 1;	
echo'<table cellspacing="0" cellpadding="0" border="1" bordercolor="noir" width="80%" align="center">';
echo'<tr><td style="border-top:1px solid #FFF;border-left:1px solid #FFF;"></td><td style="background:rgba(246,168,192,0.3);text-align:center;padding:.5em;">[i]</td><td style="background:rgba(203,157,190,0.3);text-align:center;padding:.5em;">[é]</td></tr>';
foreach($reponses as $cle => $reponse)
{
echo'<tr>';
echo'<td width="5%">';
echo '<button class="button_audio" onclick="playVid(\'audio_'.$cle.'\')" type="button" value="' . $reponse['mp3'] . '"></button>';
			echo '<audio id="audio_'.$cle.'">';
			echo '<source src="' . $reponse['mp3'] .'" type="audio/mp3">';
			echo '<p>Votre navigateur ne supporte pas le format audio.</p>';
			echo '</audio>';
echo'</td>';	
if (isset($_POST['correction']))
{
$clic = $_POST[$cle];
$errors = array();
$point = array();
foreach($choix as $key => $value){
if (empty($clic) AND empty($clic) !== $reponse['reponse'])
{
$msg = '<p style="text-align:center;">vous n\'avez pas rempli tous les champs, veuillez recommençer!</p>';
echo $msg;
}
else
if ($clic == $value)
{
$point[$cle] = htmlspecialchars($clic);
var_dump($clic);
foreach($choix as $key => $value){
echo'<td style="text-align:center;" width="20%"><img src="../img/croix-noir.jpg" alt="croix-noir" width="54" height="54" /></td>';
}
echo'<td style="text-align:center;" width="20%"><span style="font-family:notosans-bold;font-size:1.2em;">'.$reponse['mot'].'</span></td>';
}
else
if ($clic !== $value)
{
$errors[$cle] = htmlspecialchars($clic);

foreach($choix as $key => $value){
echo'<td style="text-align:center;" width="20%"><img src="../img/croix-rouge.jpg" alt="croix-noir" width="54" height="54" /></td>';
}
echo'<td style="text-align:center;" width="20%"><span style="color:#ff0000;font-family:notosans-bold;font-size:1.2em;">'.$reponse['mot'].'</span></td>';
}
}
}
}
echo'</tr>';
echo'</table>';

[/i][/i][/i]
Bonjour !

J'ai pris votre code, je l'ai indenté, essayé de le comprendre... J'avoue que j'ai du mal. Sans doute parce que je ne suis pas une développeuse...

Une ligne me trouble :
if (empty($clic) AND empty($clic) !== $reponse['reponse'])


Dans la seconde partie de la parenthèse, le résultat de empty($clic) est un booléen (true, false) et vous le comparez à une chaîne de caractère $reponse['reponse']...

Je ne dis pas que corriger cela est la solution à vos problèmes.

Smiley smile
Modifié par Zelena (09 Jul 2016 - 08:53)