Affichage du scénario sélectionné dans la liste
Fermé
AMARI
-
27 mai 2013 à 10:39
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 27 mai 2013 à 15:04
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 27 mai 2013 à 15:04
A voir également:
- Affichage du scénario sélectionné dans la liste
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Affichage double ecran - Guide
- Gertrude a préparé la liste des affaires à prendre pour l'excursion. juliette a modifié cette liste en utilisant le mode suivi des modifications proposé par le traitement de texte. - Guide
- Comment cacher la liste d'amis sur facebook - Guide
4 réponses
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié par [Dal] le 27/05/2013 à 13:12
Modifié par [Dal] le 27/05/2013 à 13:12
Salut AMARI,
Je n'ai que survolé ton code, qui est trop long et contient de nombreuses parties hors sujet par rapport à ta question.
Je comprends que la partie pertinente est :
Tu peux faire cela de plusieurs façons.
Si tu prévois un onchange="submit();", comme tu le fais dans ton code, cela signifie que tu vas traiter le changement avec Javascript... sauf que, sauf erreur, tu n'as définit aucune fonction Javascript s'appelant "submit()".
1.
Alternativement, tu pourrais faire un POST des valeurs modifiées, et recharger la page en affichant dans la zone où tu veux afficher le résultat, les données appropriées, après avoir récupéré la valeur sélectionnée avec $_POST.
C'est le plus facile à faire.
2.
Si tu tiens à utiliser Javascript, pour éviter un rechargement de page, il te faudra utiliser AJAX.
Voilà un exemple de ce que tu peux générer pour ton Html et Javascript :
Avec un exemple d'un fichier getScenarioDetails.php qui pourrait contenir quelque chose comme cela :
C'est plus compliqué, mais c'est plus joli.
C'est inspiré de http://www.w3schools.com/ajax/ajax_aspphp.asp
Dal
Je n'ai que survolé ton code, qui est trop long et contient de nombreuses parties hors sujet par rapport à ta question.
Je comprends que la partie pertinente est :
<form name="form_liste" id="15" method="POST" action=""> <select name="liste_scenario" onchange="submit();"> <option value="">-- Choisissez un scénario --</option> <?php $strSQL = "SELECT * FROM valeurs_a_saisir WHERE valeurs_a_saisir.Id_user = $Id_user"; $res2 = $db->query($strSQL); while($row= mysqli_fetch_array($res2)){ $fd = $row['titre']; echo "<option value=' '>".$fd."</option>"; // ici je ne sais pas quoi mettre dans le value } ?> </select> </form>
Tu peux faire cela de plusieurs façons.
Si tu prévois un onchange="submit();", comme tu le fais dans ton code, cela signifie que tu vas traiter le changement avec Javascript... sauf que, sauf erreur, tu n'as définit aucune fonction Javascript s'appelant "submit()".
1.
Alternativement, tu pourrais faire un POST des valeurs modifiées, et recharger la page en affichant dans la zone où tu veux afficher le résultat, les données appropriées, après avoir récupéré la valeur sélectionnée avec $_POST.
C'est le plus facile à faire.
2.
Si tu tiens à utiliser Javascript, pour éviter un rechargement de page, il te faudra utiliser AJAX.
Voilà un exemple de ce que tu peux générer pour ton Html et Javascript :
<!DOCTYPE html> <html> <head> <script> function changeScenario() { // récupérer la sélection var scenSelect = document.getElementById("liste_scenario"); var scenSelectValue = scenSelect.options[scenSelect.selectedIndex].value; // faire une requête AJAX avec la scenSelectValue récupérée var xmlhttp; if (scenSelectValue.length==0) { document.getElementById("spanScenario").innerHTML = ""; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("spanScenario").innerHTML = xmlhttp.responseText; } } xmlhttp.open("GET","getScenarioDetails.php?q="+scenSelectValue,true); xmlhttp.send(); } </script> </head> <body> <select id="liste_scenario" onchange="changeScenario();"> <option value="" disabled selected style="display:none;">-- Choisissez un scénario --</option> <option value="1">val 1</option> <option value="2">val 2</option> <option value="3">val 3</option> </select> <p>Texte à afficher : <span id="spanScenario"></span></p> </body> </html>
Avec un exemple d'un fichier getScenarioDetails.php qui pourrait contenir quelque chose comme cela :
<?php // Tableau pour l'exemple avec les détails de chaque scénario // toi, tu récupéreras les données dans ta BDD $a[]="Détails du scénario 1"; $a[]="Détails du scénario 2"; $a[]="Détails du scénario 3"; // obtenir le paramètre q provenant de l'URL $q=$_GET["q"]; // TODO : vérifier que c'est bien une valeur numérique, // comprise entre 0 et 2 (nos 3 éléments), avant de // faire une requête à la BDD ou de traiter l'information // récupérée // renvoyer le scénario correspondant // dans notre exemple, on pioche dans le tableau echo $a[$q]; ?>
C'est plus compliqué, mais c'est plus joli.
C'est inspiré de http://www.w3schools.com/ajax/ajax_aspphp.asp
Dal
Salut Dal ,
Merci pour ta réponse , en fait pour mon code j'en ai une page pour saisir les données dans un formulaire et j'enregistre ces données avec un titre x qui va après apparaître dans la liste déroulante , jusqu'à là on est bon par contre après je veux quand je sélectionne ce titre x j'arrive à récupérer et afficher les données de ma base lié à ce titre , là je suis bloquée dans cette partie d'affichage comment je peux faire. Merci
Merci pour ta réponse , en fait pour mon code j'en ai une page pour saisir les données dans un formulaire et j'enregistre ces données avec un titre x qui va après apparaître dans la liste déroulante , jusqu'à là on est bon par contre après je veux quand je sélectionne ce titre x j'arrive à récupérer et afficher les données de ma base lié à ce titre , là je suis bloquée dans cette partie d'affichage comment je peux faire. Merci
Tout simplement, quand je clic sur un des choix de ma liste déroulante j'aimerais que ça affiche dans la même page les données de ce choix. c'est qu'est ce que je voudrais merci
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié par [Dal] le 27/05/2013 à 14:10
Modifié par [Dal] le 27/05/2013 à 14:10
Oui, j'ai bien compris.
Je t'ai donné 2 méthodes, dont une (la plus compliquée car utilisant AJAX) avec du code d'exemple, avec du code qui fonctionne sur l'exemple que je t'ai donné.
Je te suggère de prendre mon code, de le mettre sur ton serveur, et de voir comment il fonctionne.
Si tu ne comprends toujours pas ce qu'il fait, ou comment l'utiliser, pose la question ici.
Dal
Je t'ai donné 2 méthodes, dont une (la plus compliquée car utilisant AJAX) avec du code d'exemple, avec du code qui fonctionne sur l'exemple que je t'ai donné.
Je te suggère de prendre mon code, de le mettre sur ton serveur, et de voir comment il fonctionne.
Si tu ne comprends toujours pas ce qu'il fait, ou comment l'utiliser, pose la question ici.
Dal
d'accord alors si je prend le premier exemple il faut que je le mettre après mes lignes des codes qui existe déjà ? et pour cette portion de code don ton primer exemple j'ai sais ça sert quoi
<select id="liste_scenario" onchange="changeScenario();">
<option value="" disabled selected style="display:none;">-- Choisissez un scénario --</option>
<option value="1">val 1</option>
<option value="2">val 2</option>
<option value="3">val 3</option>
</select>
parce pour moi j'ai déjà fait la liste déroulante avec php et pour les valeurs dans la liste c'est à dire les titres il vont être ajouté selon chaque nouveau enregistrement.
voilà le code de ma liste déroulante :
$strSQL = "SELECT * FROM valeurs_a_saisir WHERE valeurs_a_saisir.Id_user = $Id_user";
$res2 = $db->query($strSQL);
//$row = mysql_fetch_array($res2);
while($row= mysqli_fetch_array($res2)){
$fd = $row['titre'];
echo "<option value='".$row['Id_user'].";
'>".$fd."</option>";
}
<select id="liste_scenario" onchange="changeScenario();">
<option value="" disabled selected style="display:none;">-- Choisissez un scénario --</option>
<option value="1">val 1</option>
<option value="2">val 2</option>
<option value="3">val 3</option>
</select>
parce pour moi j'ai déjà fait la liste déroulante avec php et pour les valeurs dans la liste c'est à dire les titres il vont être ajouté selon chaque nouveau enregistrement.
voilà le code de ma liste déroulante :
$strSQL = "SELECT * FROM valeurs_a_saisir WHERE valeurs_a_saisir.Id_user = $Id_user";
$res2 = $db->query($strSQL);
//$row = mysql_fetch_array($res2);
while($row= mysqli_fetch_array($res2)){
$fd = $row['titre'];
echo "<option value='".$row['Id_user'].";
'>".$fd."</option>";
}
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié par [Dal] le 27/05/2013 à 15:12
Modifié par [Dal] le 27/05/2013 à 15:12
Salut AMARI,
As tu testé mon code comme je te le demandais ?
Cette partie du code html :
Est destinée à te montrer :
- comment on écrit une liste déroulante dont la sélection n'est pas destinée à être postée (donc non encadrée de <form> et </form>), mais traitée par Javascript, et ne comportant donc pas la directive POST, qui est inutile dans ce cas
- comment on référence l'élément dans le DOM avec un "id" pouvant être récupéré dans la fonction Javascript changeScenario()
- comment on crée un premier élément inactif comportant un texte d'aide, qui n'est pas ensuite sélectionnable dans la liste déroulante ">-- Choisissez un scénario --<"
- comment on remplit la liste, avec des valeurs utiles dans "value", récupérées ultérieurement dans changeScenario();
Mon programme n'est pas à copier-coller dans ton code. En revanche, il fonctionne, car je l'ai testé.
Ton code est long et non testable car je ne dispose pas de ta base de données, alors je ne vais pas m'amuser à coder en aveugle.
Bien sûr que tu génères ton code Html (et éventuellement Javascript aussi d'ailleurs) avec ton script Php. Fais le en mettant un contenu significatif à la place de <option value="1">val 1</option>, etc. et adapte aussi le reste du code à ton cas, après l'avoir testé et en avoir compris le fonctionnement.
Mon code te montre bien d'autres choses.
Teste le, et essaye d'en comprendre le fonctionnement avant de te lancer dans son intégration dans tes pages.
Dal
As tu testé mon code comme je te le demandais ?
Cette partie du code html :
<select id="liste_scenario" onchange="changeScenario();"> <option value="" disabled selected style="display:none;">-- Choisissez un scénario --</option> <option value="1">val 1</option> <option value="2">val 2</option> <option value="3">val 3</option> </select>
Est destinée à te montrer :
- comment on écrit une liste déroulante dont la sélection n'est pas destinée à être postée (donc non encadrée de <form> et </form>), mais traitée par Javascript, et ne comportant donc pas la directive POST, qui est inutile dans ce cas
- comment on référence l'élément dans le DOM avec un "id" pouvant être récupéré dans la fonction Javascript changeScenario()
- comment on crée un premier élément inactif comportant un texte d'aide, qui n'est pas ensuite sélectionnable dans la liste déroulante ">-- Choisissez un scénario --<"
- comment on remplit la liste, avec des valeurs utiles dans "value", récupérées ultérieurement dans changeScenario();
Mon programme n'est pas à copier-coller dans ton code. En revanche, il fonctionne, car je l'ai testé.
Ton code est long et non testable car je ne dispose pas de ta base de données, alors je ne vais pas m'amuser à coder en aveugle.
Bien sûr que tu génères ton code Html (et éventuellement Javascript aussi d'ailleurs) avec ton script Php. Fais le en mettant un contenu significatif à la place de <option value="1">val 1</option>, etc. et adapte aussi le reste du code à ton cas, après l'avoir testé et en avoir compris le fonctionnement.
Mon code te montre bien d'autres choses.
Teste le, et essaye d'en comprendre le fonctionnement avant de te lancer dans son intégration dans tes pages.
Dal