Menu

Comment récupérer la valeur avec une balise input [Résolu]

boni91 23 Messages postés dimanche 12 novembre 2017Date d'inscription 22 juillet 2018 Dernière intervention - 13 mai 2018 à 18:22 - Dernière réponse : boni91 23 Messages postés dimanche 12 novembre 2017Date d'inscription 22 juillet 2018 Dernière intervention
- 13 mai 2018 à 20:12
Bonjour,

j'essaye depuis un moment de pouvoir récupéré les valeurs qui se trouve dans un array de plusieurs balises input type image sur une autre page, mais sans succès rien ne s'affiche.

de plus quand je clic sur le choix ça m'envoie direct sur la page correction hors qu il y a douze réponses a donner.

je suis un peu perdu!

voici un bout du array
'chx_11' => array(
'chiffre' => '12',
'reponse' => '../png-alphabet/W.png',
'reponse1' => '../png-alphabet/V.png',
'reponse2' => '../png-alphabet/U.png',
'mot' => '',
'btn' => '../btn/oreille.png',
'mp3' => '../mp3/8-plan.mp3'
) 


voici le code de la page avec le formulaire:
echo '<form class="form_exercices_ou_result" action="../correct_exo/correction-exo-alphabet-2.php" method="POST" />';
echo'<div style="display:inline-block;width:450px;min-height:350px;border-right:1px solid #000;">';
foreach($reponses as $cle => $reponse){
echo'<p style="font-size:1.2em;padding:0 20px;">'.$reponse['chiffre'].'</p>'; 
echo '<button class="button_audio" onclick="playVid(\'son_1'.$cle.'\')" type="button" value="' . $reponse['mp3'] . '"></button>';
   echo '<audio id="son_1'.$cle.'">';
   echo '<source src="' . $reponse['mp3'] .'" type="audio/mp3">';
   echo '<p>Votre navigateur ne supporte pas le format audio.</p>';
   echo '</audio>';

echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;" type="image" src="../png-alphabet/' . $reponse['reponse'] . '" width="30px" height="30px" name="'.$cle.'" value="' . $reponse['reponse'] . '" /></p>';
echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;"  type="image" src="../png-alphabet/' .$reponse['reponse1'] . '" width="30px" height="30px" name="'.$cle.'" value="' . $reponse['reponse1'] . '" /></p>';
echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;"  type="image" src="../png-alphabet/' . $reponse['reponse2'] . '" width="30px" height="30px" name="'.$cle.'" value="' . $reponse['reponse2']  . '" /></p>'; 

}
echo'</div>';
echo'<div style="display:inline-block;width:450px;height:350px;">';
foreach($reponses1 as $cle1 => $reponse1){
echo'<p style="font-size:1.2em;padding:0 20px;">'.$reponse1['chiffre'].'</p>'; 
echo '<button class="button_audio" onclick="playVid(\'son_1'.$cle.'\')" type="button" value="' . $reponse1['mp3'] . '"></button>';
   echo '<audio id="son_1'.$cle1.'">';
   echo '<source src="' . $reponse1['mp3'] .'" type="audio/mp3">';
   echo '<p>Votre navigateur ne supporte pas le format audio.</p>';
   echo '</audio>';

echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;" type="image" src="../png-alphabet/' . $reponse1['reponse'] . '" width="30px" height="30px" name="'.$cle1.'" value="' . $reponse1['reponse'] . '" /></p>';
echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;"  type="image" src="../png-alphabet/' .$reponse1['reponse1'] . '" width="30px" height="30px" name="'.$cle1.'" value="' . $reponse1['reponse1'] . '" /></p>';
echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;"  type="image" src="../png-alphabet/' . $reponse1['reponse2'] . '" width="30px" height="30px" name="'.$cle1.'" value="' . $reponse1['reponse2']  . '" /></p>'; 

}
echo'</div>';
echo'</div>';
echo '<div style="display:inline-block;margin-left:-15em;margin-top:2em;" class="correction_center"><input type="submit" name="correction" value="correction"/></div>';
echo '</form>';
echo'<div><a href="javascript:scroll(0,0)"><figure style="margin:0 0 0 96%;" class="bouton_retour"><img src="../img/fhg.jpg" alt="fleche vers le haut" width="60" height="60" /></figure></a></div>';

?> 


voici la page correction:
echo'<div style="display:inline-block;width:450px;min-height:350px;border-right:1px solid #000;">'; 
if (isset($_POST['correction']))
{

foreach($reponses as $cle => $reponse){
$clic = trim($_POST[$cle]);
echo '<button class="button_audio" onclick="playVid(\'son_1'.$cle.'\')" type="button" value="' . $reponse['mp3'] . '"></button>';
echo '<audio id="son_1'.$cle.'">';
echo '<source src="' . $reponse['mp3'] .'" type="audio/mp3">';
echo '<p>Votre navigateur ne supporte pas le format audio.</p>';
echo '</audio>';
foreach($choix as $key => $value){
if(empty($clic) && empty($clic) != $reponse['reponse'] OR empty($clic) && empty($clic) != $reponse['reponse1'] OR empty($clic) && empty($clic) != $reponse['reponse2']){
echo'<figure style="display:inline-block;">';
echo'<img src="../img/ok.jpg" alt="reponse fausse" width:"55" height="55" /></figure>';
}else if($clic == $reponse['reponse'] AND $reponse['reponse'] != $key OR $clic !== $reponse['reponse1'] AND $reponse['reponse1'] != $key OR $clic == $reponse['reponse2'] AND $reponse['reponse2'] = $key){
$point[$cle] = htmlspecialchars($clic);

echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;" type="image" src="../png-alphabet/' . $reponse['reponse'] . '" width="30px" height="30px" name="'.$cle.'" value="' . $reponse['reponse'] . '" /></p>';
echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;" type="image" src="../png-alphabet/' .$reponse['reponse1'] . '" width="30px" height="30px" name="'.$cle.'" value="' . $reponse['reponse1'] . '" /></p>';
echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;" type="image" src="../png-alphabet/' . $reponse['reponse2'] . '" width="30px" height="30px" name="'.$cle.'" value="' . $reponse['reponse2'] . '" /></p>';
echo'<p style="color:green;font-size:1.2em;"><b>'. $point[$cle].'</b></p>';
echo'<figure style="display:inline-block;margin-top:1em;">';
echo'<img src="../img/ok1.jpg" alt="reponse bonne" width:"55" height="55" /></figure><br />';

break;
}else if($clic !== $reponse['reponse'] AND $reponse['reponse'] != $key OR $clic !== $reponse['reponse1'] AND $reponse['reponse1'] != $key OR $clic !== $reponse['reponse2'] AND $reponse['reponse2'] != $key){

$errors[$cle] = htmlspecialchars($clic);

echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;" type="image" src="../png-alphabet/' . $reponse['reponse'] . '" width="30px" height="30px" name="'.$cle.'" value="' . $reponse['reponse'] . '" /></p>';
echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;" type="image" src="../png-alphabet/' .$reponse['reponse1'] . '" width="30px" height="30px" name="'.$cle.'" value="' . $reponse['reponse1'] . '" /></p>';
echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;" type="image" src="../png-alphabet/' . $reponse['reponse2'] . '" width="30px" height="30px" name="'.$cle.'" value="' . $reponse['reponse2'] . '" /></p>';
echo'<p style="color:red;font-size:1.2em;"><b>'. $errors[$cle].'</b></p>';
echo'<figure style="display:inline-block;">';
echo'<img src="../img/ok.jpg" alt="reponse fausse" width:"55" height="55" /></figure><br />';

break;

}
}
}
echo $msg;


echo'</div>';


merci pour votre réponse tout en m'expliquant le pourquoi.

Afficher la suite 

Votre réponse

6 réponses

jordane45 22101 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 17 août 2018 Dernière intervention - 13 mai 2018 à 18:52
0
Merci
Bonjour,
Ton problème semble venir du fait que tu utilises des
<input type="image"

De ce fait, il considère que tu "submit" le formulaire.
Le mieux serait de gérer tes images via des balises <img>
et , en javascript, cocher des checkbox (hidden) afin de pouvoir récupérer les valeurs choisis lors du vrai "submit" de ton formulaire.
boni91 23 Messages postés dimanche 12 novembre 2017Date d'inscription 22 juillet 2018 Dernière intervention - 13 mai 2018 à 19:17
merci jordane,

oui mais je ne connais que peu le javascript, si je comprend bien il faut que ma balise input soit en hidden comme ceci:
echo'<p style="text-align:center;font-size:1.2em;display:inline-block;"><input style="margin:0 0 0 65px;" type="hidden" name="'.$cle.'"  value="' . $reponse['reponse'] . '" /><img src="../png-alphabet/A.png"</p>';

et pour le le chekbox en javascript aurais tu un lien a me proposer
boni91 23 Messages postés dimanche 12 novembre 2017Date d'inscription 22 juillet 2018 Dernière intervention - 13 mai 2018 à 19:21
par contre j ai oublier de préciser que je ne veus pas de case a cochez, mais que ça soit l'image que je coche
Salut il me semble que ceci est un problème aussi:

"de pouvoir récupéré les valeurs qui se trouve dans un array de plusieurs balises input "

Pour récupérer des valeurs (ex: vers une page PHP) vous pouvez utiliser un formulaire (<form>) via la méthode POST ou GET. Généralement POST. Reprenez vos cours/tutos là dessus ça serait un bon début, où récupérez vous les valeurs qui ne sont sûrement pas des variables mais contenus dans la variable(globale) GET ou POST associé! A fortiori étant juste les valeurs ('textuelles') associées au formulaire oubliez une structure de variable comme un tableau de variables(a r r a y en anglais). Quand à lier JavaScript et PHP c'est rigoureusement impossible car JavaScript fonctionne en local et PHP(comme son nom l'indique) côté serveur, donc votre façon de faire me paraît foireuse dès le départ.

Une bonne façon de faire et de séparer les scripts de la page, vous vous seriez rendus compte directement de votre erreur. Je veux dire faire un fichier séparé que vous indiquez dans l'attribut 'action' de votre formulaire, exemple ici:
https://www.w3schools.com/tags/att_form_action.asp

sans oublier d'utiliser POST et non G E T.

Sinon vous avez A.J.A.X qui permet des requêtes asynchrone avec une base de données. Si vous n'avez pas de base de données laissez tomber PHP pour JavaScript , votre PHP ne fera que ralentir l'exécution. Quant à la différence entre JavaScript et PHP l'un fonctionne sur le navigateur et plus simple et permissif(pas besoin de serveur distant apache pour que PHP fonctionne) seule la syntaxe change, autant dire pas grand chose, vous n'avez même pas besoin du e c h o PHP car il existe des fonctions intégrées au langages pour manipuler directement le HTML(DOM) bien plus facilement et simplement que si vous aviez à écrire le tout vous même.
Pour rappel sur les formulaires et PHP : http://php.net/manual/fr/tutorial.forms.php
boni91 23 Messages postés dimanche 12 novembre 2017Date d'inscription 22 juillet 2018 Dernière intervention - 13 mai 2018 à 20:12
merci nomad,
j utilise deja un formulaire suivant la method POST
echo '<form class="form_exercices_ou_result" action="../correct_exo/correction-exo-alphabet-2.php" method="POST" />'; je recupere les $cle sur une autre page 
	$clic = trim($_POST[$cle]);
, j'ai d autres exercices qui fonctionne très bien comme ça, la ou ça cloche c est a partir du moment ou j utilise des images.
j arrive a afficher en faisant
echo'<p style="text-align:center;width:100px;font-size:1.2em;"><input style="margin:10px 0 0 -50px;visibility:hidden;" type="checkbox" name="' . $cle. '" value="' . $reponse['reponse'] . '" /><img src="'.$reponse['reponse'].'" width="30px" height="30px" /></p>';

mais le souci de maintenant viens de pouvoir comparrer se que j'envoie.
Commenter la réponse de jordane45