Recuperation des données d'une liste

Résolu/Fermé
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 - 20 févr. 2008 à 22:58
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 - 24 févr. 2008 à 12:01
bonsoir à tous,me revoila avec mes soucis..
voila mon probleme je veut mettre sur mon site une page d'entraide ou les gens vont indiquer leur profil materiel.
pour cela j'utilise des liste deroulante
1 pour le fabricant du pc 1 pour le modele etc..

j'alimente mes listes depuis ma base de donnée
exemple:
<!--marque du pc-->

<label><h4>Marque de votre pc :</h4></label>
<select name="fabricant" >

<?
//requete pour le fabricant du pc
$reqfab="SELECT Constructeur FROM machine";
$resfab = mysqli_query($connexion,$reqfab);
while($valfab=mysqli_fetch_array($resfab))
{
$reffab=$valfab["Id"];
$fab=$valfab["Constructeur"];
?>

<label><h4>Fabricant :</h4></label>

<option value="<? echo $reffab ?>"><? echo $fab ?></option>
<?
//fin de la boucle
}

?>
</select>

<input type="text" value="<? echo $fab ?>" />


<!--modele du pc-->

<label><h4>Modele de votre pc :</h4></label>
<select name="modele">

<?
//requete pour les modeles
$reqmod="SELECT Modele FROM machine ";
$resmod = mysqli_query($connexion,$reqmod);
while($valmod=mysqli_fetch_array($resmod))
{
$refmod=$valmod["Id"];
$mod=$valmod["Modele"];
?>

<label><h4>Modèle : </h4>

<option value="<? echo $refmod ?>"><? echo $mod ?></option>
<?
//fin de la boucle
}

?>
</select>

jusque la ca marche mon probleme c'est que je voudrais qu'une fois selectionné le fabricant dans la liste modele cela m'affiche que les modele du fabricant selectionné (pour eviter d'avoir un HP inspiron par exemple..)
j'ai essaye avec
$reqmod="SELECT Modele FROM machine WHERE Modele='$fab'";
mais c'est pas concluant..

aussi ma question comment fait t'on pour recuperer la valeur selectionnée dans la liste precedente.
Je suis sur que c'est tout bête mais j'avoue je sèche...lamentablement
merci par avance

@+

34 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 févr. 2008 à 00:24
Bonsoir,

Pour recup de la marque:

$fabriquant=$_POST['fabriquant'];

si bien sur tu as method="post" dans ta balise<form

donc ta requette:

$reqmod="SELECT Modele FROM machine WHERE Constructeur='".$fabriquant."'"
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
21 févr. 2008 à 05:44
ok ,merci alain je teste ça.

je debute avec php et je pensais que post ne servais que pour recuperer des valeurs passée sur une autre page ,mais pas dans la meme page.

j'essaye
@+
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
21 févr. 2008 à 07:13
ca marche pas.... ^^^^^^
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
21 févr. 2008 à 08:11
Dans ce cas il faut mettre dans la balise select un onChange qui appelle un script Javascript.
0

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

Posez votre question
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
21 févr. 2008 à 08:53
merci croy,c'est ce que je me suis rendu compte en cheerchant une solution.
le pb c'est que JS je connais pas ttrop.Je suis en train de potasser ça ,mais y'a un truc que j'ai pas compris
comment on fait pour designer la variable recuperée dans le 1er select ?

<form><input type="text" value="" onchange="alert('onchange')"/></form>
j'ai vu ça en exemple mais ca m'ouvre un popup et j'arrive pas a trouver la syntaxe qui pourrais remplacer alert...

par avance merci
@+
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
21 févr. 2008 à 09:00
Pour récupérer la valeur d'un menu select généré par <select name="modele"> dans un formulaire débutant par <form name="leF" : utilise document.leF.idOuNom.value.

Le script que tu dois définir sert à rappeler ta page avec en donnant en paramètre la vaeur du select

<script language="JavaScript">
<!--
function recharger()
{
lesParams = "?modele=" + document.leF.modele.value;
window.location="tonScript.php"
+ lesParams;
}
//-->
</script>
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
21 févr. 2008 à 09:03
merci je teste ça
actuellement je potasse ce site
https://javascript.developpez.com/

mais c'est pas clair.. lol!!!
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
21 févr. 2008 à 09:35
bon j'avance petit à petit..

voila j'arrive a recuperer quelquechose ,mais c'est toujours le premier elemnt de la liste

<form name="ordi">
<select name="pc" id="pc" >
<option value="bureau">ordinateur de bureau</option>
<option value="portable">Portable</option>
</select>
<script language="javascript">
document.write(document.getElementById('pc').options[document.getElementById('pc').selectedIndex].text);

</script>
</form>

a chaque fois c'est bureau (le 1er)

je vais y arriver.. lol!
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
21 févr. 2008 à 10:07
Deux changements à faire :

1. placer ton script entre <head> et </head>
2. inclure onchange=".. dans la balise select

Ton script devient qqch comme :

<head>
<script language="javascript">
function recharge()
{
lesParams = "?pc="document.getElementById('pc').options[document.getElementById('pc').selecte­dIndex].text;
window.location = "toScript.php" + lesParams;
}
</script></head>
<body>
<form name="ordi">
<select name="pc" id="pc" onchange="javascript:recharge();">
<option value="bureau">ordinateur de bureau</option>
<option value="portable">Portable</option>
</select>

</form>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 févr. 2008 à 10:30
Bonjour,

Si tu veux recuperer la valeur selectionnée dans la liste en Javascript:

dans ta partie html

<select name="liste_constr" id="liste_constr" onChange="recharge('liste_constr');">

dans ta fonction JS

function recharge(id_a_lire){
var valeur_selectionnee=document.getElementById(id_a_lire).value;
//et pour visualiser ça tu fais une petite boite d'alerte provisoire
alert(3valeur selectionnée dans la laiste: "+valeur_selectionnee);
}

Mais quand tu as fait ça tu va faire qou ?

-Si tu te lances sur cette piste en Javascript, il faut que tu utilises Ajax:

C'est à dire sur le onChange, ça appelle une fonction Ajax/Javascript
- qui va lire la valeur selectionnée
- qui va appeler en arrière plan sans rechargement de la page, un script php
en lui envoyant cette valeur
- le script php va lire la BDD avec cette valeur comme critère et renvoyer la deuxième liste
- lorsque Ajax reçoit ça il affiche la liste2 dans la page par innerHTML

C'est un peu compliqué, mais si tu veux essayer vas voir les exemples la dessus

Sinon tu as la solution tout en php qui recharge la page, elle s'appelle elle même
si ta page se nomme formulaire.php
action="formulaire.php

Tu récupères la valeurs reçue de liste 1 pour faire ta requette liste2 et l'afficher
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
21 févr. 2008 à 10:45
merci à tous de vous pencher sur mon prblème.

le php ,sql c'est bon ,mais le JS oulala...^^^^^je nage complet

je suis en train de faire un site perso avec pour vocation de donner des conseils de dépannage de configuartion etc.. aux gens (gratuitement je precise.. lol!)
donc j'ai une page ou les gens vont remplir un formulaire decrivant leur config matériel.

dans mes select qui sont rattachés a ma BD s'affiche les marques des pc,si ce sont des portables ou pas ,enfin je vais avoir 7 ou 8 select à faire.

en selectioonant par exemple ordinateur portable dans le select suivant je voudrais qu'il ne s'affiche que les ordi portable et ainsi de suite.

pour creer la requete sql faisant le tri y'a pas de probleme sauf que j'arrive pas a recuperer la valeur du precedent select pour l'inclure dans ma requete

ex je choisit type d'ordi=portable

ma requete pour afficher les modeles dans le select suivant serai

$reqmod="SELECT Model FROM machine WHERE Type='$type'"; ou $type serai le resulta du 1er select

et ainsi de suite
..vous suivez ???

j'y suis depuis 5h ce matin et je dois avouer que c'est un peu "brouillon" dans ma tite tête..

la page n'est pas encore en ligne mais voici l'adresse
http://milsodor.no-ip.org/prive/assistance/profil.php

si tu veut regarder

encore merci


@+
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
21 févr. 2008 à 11:13
Il y a certainement plusieurs façons de traiter ton pb.

La plus simple reste cependant Javascript seul comme je te l'ai indiqué.

Je te conseille de l'appliquer en comprenant bien ce qui se passe.
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
21 févr. 2008 à 11:14
oui moi aussi je pense que JS est la plus simple maintenant faut plus que j'y arrive
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
21 févr. 2008 à 11:16
Bon courage et à ta disposition.

Aide-toi le ciel t'aidera : dans ton cas essaye de comprendre ce que tu programmes.
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
21 févr. 2008 à 11:20
j'aime bien comprendre ce que je fait et en plus je suis "un peu tetu"..lol!!!
je vais y arriver
quand on veut on peut
encore merci
@+
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 févr. 2008 à 13:14
Bonjour,

Je suis allé voir ton site, d'après le code source tu as un pb de codage HTML



<label>
<h4>Système d'exploitation :</h4></label>

<option value="1"></option>

<label>
<h4>Système d'exploitation :</h4></label>

<option value="2">windows xp édition familliale</option>

<label>
<h4>Système d'exploitation :</h4></label>

<option value="3">Windows 98</option>

<label>
<h4>Système d'exploitation :</h4></label>

<option value="4">windows 98 ME</option>

<label>
<h4>Système d'exploitation :</h4></label>

<option value="5">windows 2000</option>
ect...


Il n'est pas normal que tu ais <label ><h4>Système d'exploitation :</h4></label>
à chaque ligne <option

Il faut que tu mettes ça en dehors de ta boucle while qui génére ta liste

Idem pour la liste Navigateur.

Pour ton pb, vas voir "listes déroulantes liées en Ajax" sur ce forum. J'ai déja participé à une discution sur le sujet
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
21 févr. 2008 à 14:05
merci alain,exact c'est pas normal je viens de corriger.

je devais penser à autre chose..lol!!!!

je vais regarder le sujet ,mais ajax ca me fait peur...je debute c'est pas trop trop compliqué?
encore merci
@+
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
21 févr. 2008 à 17:08
me revoila

alain c'est bien ce sujet que tu me parlais
http://www.commentcamarche.net/forum/affich 2188286 php ajax listes deroulantes#0


j'auaris une question

dans l'exemple de croy
<head>
<script language="javascript">
function recharge()
{
lesParams = "?pc="document.getElementById('pc').options[document.getElementById('pc').select­e­dIndex].text;
window.location = "toScript.php" + lesParams;
}
</script></head>
si j'ai bien compris je peut inclure ma requete dans "toScript.php" ou je fait fausse route ?

ce qui me change dans JS c'est totalement different de php.
dans php tu a une valeur "concrete" tandis que JS cette variable on la retrouve ou ? j'arrive pas à saisir la nuance..et pourtant c'est pas faute de réfléchir..

c'ets comme tout quand on sait pas ça parait impossible ,mais je suis sur qu'en faite c'est tout simple
@+
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
21 févr. 2008 à 17:43
Oui, ta requête sera incluse dans toScript.php en récupérant le param 'pc' par $_GET[ 'pc' ]

Si tu veux des params en plus, adapte ton script :

lesParams = "?pc=........¶m2:....¶m3.....";

En Javascript les noms de variables ne commencent pas par un $ mais il n'y a pas d'autres différences.

Ce qui est pénible avec Javascript c'est que si un pb se présente à l'exécution, il sort sans afficher de message d'erreur. ans notre cas, si tu constates que le script toScript.php n'est pas appelé, intercale des alert( "on passe ici" ) pour voir dans quelle instruction ça coince.
0
lewis34 Messages postés 2557 Date d'inscription samedi 21 juillet 2007 Statut Membre Dernière intervention 30 mai 2015 352
21 févr. 2008 à 17:46
ok merci croy
je reprends tout depuis le debut
je suis un tenace..
merci
@+
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 févr. 2008 à 17:59
Me revoilà,

Oui c'est bien le bon message, tu t'en inspires et normalement ça devrait répondre à ton pb.

Utilises tu FireFox ?

si oui il y a une console d'erreur dans le menu outils, et elle est très pratique, elle te sort les erreurs javascript lors de l'éxécution. Beaucoup plus parlant que ce que te donne IE qd tu cliques en bas à gauche dans la barre d'état sur Erreurs
0