question sur liste deroulante dependantes ???

Eléphant du PHP | 55 Messages

16 juin 2005, 11:47

Bonjour,

voila je voudrait ameliorer mon formulaire, car mon but est de faciliter la vie des utilisateurs (et surtout d etre sur que les valeurs rentrées soit bonne pour pas planter la base de donnée derriere :) ).

Pour cela j ai le formulaire suivant :

Code : Tout sélectionner

Selection cartouche: <br><br> <form action="imprimante2.php" name="form1" target="_self" Method="POST"> <table width="526" border="0"> <tr> <td> Bureau : <select name="bureau"> <option selected> Informatique </select> </td> </tr> <tr> <td> Imprimante : <select name="imprimante"> <option selected> 6400 <option> HP 1220C <option> Phaser 8400 <option> Lexmark W812 <option> Dell A320 </select> </td> </tr> <tr> <td> type de cartouche : <select name="cartouche"> <option selected> ruban <option> encre noire <option> encre 3 couleurs <option> kit 3 encres noires <option> kit 6 encres noires <option> kit 3 encres cyan <option> kit 3 encres magenta <option> kit 3 encres yellow <option> kit de maintenance <option> toner </select> </td> </tr> <tr> <td> quantite : <select name="quantite"> <option selected> 1 <option> 2 <option> 3 <option> 4 <option> 5 <option> 6 <option> 7 <option> 8 <option> 9 <option> 10 </select> </td> </tr> <tr> <td width="343"> <input type="submit" name="Submit" value="Valider"> </td> </tr> </table> </form>
et je voudrais que une fois que l utilisateur a selectionner l imprimante cela mette a jour la liste des cartouches disponnible en fonction de celle ci.

J ai cherche un peu sur le net mais je ne trouve que des codes dont je ne comprend pas grand chose.

je suppose que je vais avoir besoin de requete de genre

SELECT cartouche FROM la table ou sont les cartouche WHERE imprimante = '$imprimante';

et donc d'une connexion a ma base.

est ce que vous pourriez m aider ou si vous connaissez me donner l adresse d un tutorial bien explique (en francais ^^)

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

16 juin 2005, 12:22

tu tapes "liste déroulante dynamique" dans le formulaire de recherche, ça a déjà été traité comme problème

http://www.phpfrance.com/forums/search.php

essaye déjà de remplir une liste déroulante avec les infos d'une table de ta base, tu verras ensuite comment mettre à jour une autre liste suivant le choix de la première

Eléphant du PHP | 55 Messages

16 juin 2005, 13:50

ou la la j ai cherche je suis tombe effectivement sur plusieurs posts qui eux renvoyaient je plus souvent sur

http://www.aidejavascript.com/article119.html

et la c'est le drame :lol: 30 mins et pas compris un mot.

(ps: c est ce truc la qu il faut faire pour avoir une seconde liste qui s actualise automatiquement par rapport a la prems ??? :(:(:(:()

Je veux bien faire en sorte que mes liste s incremente par rapport a ma base de données (et non a la méthode préhistorique comme j'ai fait) mais si j ai pas fait c ets que pareil je sais pas faire :cry:

Eléphant du PHP | 52 Messages

16 juin 2005, 13:58

Hello,

t'es pas obligé de faire quelquechose d'aussi complexe qu'a l'URL que tu as cité :wink:
mais ne nous leurrons pas, il s'agira de toutes façons de jouer avec des tableaux Javascript peuplés par du PHP, + la couche d'interactivité...

C'est pas anodin mais possible.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

16 juin 2005, 14:03

est-ce que tu sais remplir une liste déroulante dynamiquement ? en récupérant les valeurs de ta tables et en écrivant le code HTML dynamiquement

si non, commence par là

ensuite tu n'es pas obligé de faire très compliqué :
tu peux dire à la page de se recharger à chaque changement dans la liste, rechargement qui se fera avec le paramètre sélectionné et qui actualisera donc la deuxième liste en fonction de ce paramètre

c'est si tu veux faire les réactualisations sans recharger la page que ça devient compliqué

Eléphant du PHP | 55 Messages

16 juin 2005, 15:09

nan nan ca me va tres bien avec des reactualisation :lol: (si ca peut decomplexifier le truc suis preneur :roll: )

ensuite nan je sais pas encore comment remplir une liste dynamiquement j essais on me passé un code seulement je le comprend pas trop et pour le moment il marche pas.

Le probleme c est que je developpe cette base de donnée dans le cadre d une Action Professionnelle pour mon BTS et donc je devrais la soutenir a l oral et si je comprend pas ce que j ai fait ca risque d'être dur.

en code on ma donné :

Code : Tout sélectionner

<html> <head> <marquee>gestion des imprimantes</marquee> </head> <body bgcolor="gray" text="blue"> <p align=center></s><a1>GESTION DES IMPRESSIONS</a1></s></p> <br><br><br> <?php require("connect.php"); //on inclu le fichier connect.php include("connect.php"); ?> Selection cartouche: <br><br> <form action="imprimante2.php" name="form1" target="_self" Method="POST"> <table width="526" border="0"> <tr> <td> Bureau : <select name="bureau"> <php? $base = "ges_imprimante"; if ($base != -1 ){ $link = connect_db($base); $requete_util = "select service from service"; $result_ulil = "mysql_query($requete_util) or die("requete base erreur"); while ($data = mysql_fetch_array($result_util)) { print "<option value='".$data['service']."'>".$data['service']; } } else { ?> <div class="erreur"> aucune base n'est activ&eacute;e. </div> <br> <br> <?php } mysql_close(); ?>
bon ca c est seulement pour charger automatiquement et dynamiquement ma premiere liste déroulante seulement quand je lance le truc elle est vide e j ai du mal a voir les erreurs parceque je comprend pas ce que je fais :(

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

16 juin 2005, 15:13

alors pour comprendre tu va faire pas à pas

- connexion à la base
- envoie de requêtes et récupération des données
- listage de ces données et création du code HTML dynamiquement

et pour ces étapes tu va sur PHPdebut.org où il y a plein de petits tutos dans la colonne de droite

Eléphant du PHP | 55 Messages

17 juin 2005, 09:01

Je viens de faire tous les tutoriaux de
http://www.phpdebutant.org
et j ai rien vu sur la saisie automatique de la liste par rapport a la base.(par contre j ai compris a quoi servait certaines fonctions php que j utilisais)

personne n aurait un tutorial de cela explique simplement ?

Mammouth du PHP | 19672 Messages

17 juin 2005, 09:05

Pour information: Je viens de poster un nouveau sujet dans le forum des développeurs qui devrait apporter des éléments de réponses sur les lietes déroulantes liées, voir ICI
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 55 Messages

17 juin 2005, 09:17

@cyrano : merci beaucoup.

Je viens peut etre de trouver mon bonheur pour ecrire automatiquement les donnée dans une liste deroulante a partir de la base :

que pensez vous de ca,

Tout d'abord connectez vous à la base de donnée ! Puis :
<form method="post" action="bidule.php3">
         <table border=2>
         <tr><th align=middle>Sélectionner une option : </th></tr>
         <tr><td align=center><select name="variable_choisi">Choissiez votre option:
         <option selected value=""> ---------- Séléction ----------
<?php

$sql="SELECT le_champ FROM la table order by le_champ";
$optio=mysql_query($sql,$db);

while($row = mysql_fetch_row($optio)) {
         print "\t\t<option>".($row[0])."\n";
}

?>
         </select>
         </td></tr>
         <tr><td align=center><input type="submit" 
         value="Pour choisir."></td></tr>
         </table>
</form>
trouvé sous http://www.phpindex.com/trucsetastuces/ ... element=42

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juin 2005, 09:25

c'est le principe mais tu as oublié de fermer à chaque fois la balise <option>, et de lui donner un libellé

<option value="valeur">libellé</option>

Mammouth du PHP | 19672 Messages

17 juin 2005, 09:27

Ta balise option doit comporter, outre une balise de fermeture, un attribut "value" si tu veux récupérer une valeur à la sortie.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 55 Messages

17 juin 2005, 09:34

ok

c'est a dire je comprend a tres bien ce que je dois mettre dans le value.

D'autre part a cette ligne
$optio=mysql_query($sql,$db); 
il utilise une variable $db et je vois pas trop a quoi elle correspond, c'est le nom de la base de données ???.
ma base de donnée s'appelle ges_imprimante donc je doit ecrire :
$optio=mysql_query($sql,"ges_imprimante"); 

Mammouth du PHP | 19672 Messages

17 juin 2005, 09:39

Dans le cas que tu montres, la variable $db matérialise la connection:
$db = mysql_select_db($base);
$sql = "requete sql ...";
$option = mysql_query($sql, $db);
En clair, $option va retourner une ressource basée sur la requête ($sql) et sur la sélection de la base de données sur laquelle on travaille ($db).
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

17 juin 2005, 09:44

exemple :

tu as une table "Chanteurs" dans ta base, avec des infos dessus
elle est comme ça

Code : Tout sélectionner

ID | Nom | Prenom 1 | Springsteen | Bruce 2 | Knopfler | Mark 3 | Dylan | Bob
sur ton site, il y a une liste qui permet de sélectionner un chanteur
toi dans ton code tu va manipuler l'ID car c'est plus pratique, mais les gens eux ne connaissent que les noms
donc tu fais comme ceci
<select>
   <option value="1">Bruce Springsteen</option>
   <option value="2">Mark Knopfler</option>
   <option value="3">Bob Dylan</option>
</select>
ce qui est entre les balises <option> c'est le libellé qui va permettre au visiteur de faire son choix, "value" c'est la variable que toi tu récupèreras et traiteras