Bonjour,
Je dois réaliser un formulaire de collecte pour lequel je dois afficher deux listes déroulantes toutes les deux remplies via ma base de données.
La première liste influence les champs de la deuxième liste, sinon c'est pas marrant.
J'ai mon fichier HTML général
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang="fr"><head> <title>Profitez des ventes privées Benefit Cosmetics</title> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <link rel="stylesheet" type="text/css" href="CSS/infos.css"/> <script src="js-library/jquery-1.11.0.min.js"></script> <script>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 $(document).ready(function() { var $division = $('#division'); var $maison = $('#maison'); // chargement des régions $.ajax({ url: 'maison_societe.php', data: 'go', // on envoie $_GET['go'] dataType: 'json', // on veut un retour JSON success: function(json) { $.each(json, function(index, value) { // pour chaque noeud JSON // on ajoute l'option dans la liste $division.append('<option value="'+ index +'">'+ value +'</option>'); }); } }); // à la sélection d'une région dans la liste $division.on('click', function() { var val = $(this).val(); // on récupère la valeur de la région if(val != '') { $maison.empty(); // on vide la liste des départements $.ajax({ url: 'maison_societe.php', data: 'id_division='+ val, // on envoie $_GET['id_region'] dataType: 'json', success: function(json) { $.each(json, function(index, value) { $maison.append('<option value="'+ index +'">'+ value +'</option>'); }); } }); } }); });
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 </script> <style>
Code css : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 body {width:820px;} div.corps {border:2px solid #000; border-radius:0.8em; -moz-border-radius:0.8em;} p.formu {text-align:left;} div.formulaireContact {text-align:center; padding-left:200px;} p.alerte {color:#000; font-weight:bold} @font-face { font-family: 'SignPainter-HouseScript'; src: url(fonts/signpainter/SignPainter-HouseScript.ttf); src: local('?'), url(fonts/signpainter/SignPainter-HouseScript.ttf) format('truetype'); font-weight: normal; font-style: normal; } @font-face { font-family: 'PerspectiveSans'; src: url(fonts/perspective/PERSANS.TTF); src: local('?'), url(fonts/perspective/PERSANS.TTF) format('truetype'); font-weight: normal; font-style: normal; }
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 </style> </head> <body> <center> <div class="corps"> <p class="titre_contact">Texte pour expliquer le but du formulaire. <br /></p> <div class="formulaireContact"> <form action="formulaire-inscription.php" method="post" class="formu"> <p class="formu"> <label for="civilite">* Civilité :</label> <SELECT name="civilite"> <option value="Mme" >Madame </option> <option value="Mr." >Monsieur </option> </SELECT> </p> <p class="formu"> <label for="nom">* Nom :</label> <input type="text" id="nom" name="nom" value="" /> </p> <p class="formu"> <label for="prenom">* Prénom :</label> <input type="text" id="prenom" name="prenom" value="" /> </p> <p class="formu">* Choisissez <select id="division" name="division"> <option value="">-- Votre division --</option> </select> </p> <p class="formu">* Choisissez <select id="maison" name="maison"> <option value="">-- Votre Maison --</option> </select> </p> <p class="formu"> <label for="email">* E-mail :</label> <input type="text" id="email" name="email" value="" /> </p> <p class="submit"> <input type="submit" name="envoye" value="VALIDER" /> </p> <p class="formu"> <input type="checkbox" name="newsletter" value="1"/> <label for="newsletter">M'inscrire aux ventes privées Benefit Cosmetics</label> </p> </form> </div> </div> </center> </body> </html>
Mon fichier PHP qui doit récupérer le GET pour remplir les SELECT:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 <?php if(isset($_GET['go']) || isset($_GET['id_division'])) { $json = array(); if(isset($_GET['go'])) { // requête qui récupère les régions $requete = "SELECT id, nom FROM lvmh_divisions"; } else if(isset($_GET['id_division'])) { $id = htmlentities(intval($_GET['id_division'])); // requête qui récupère les départements selon la région $requete = "SELECT id, name_maison FROM lvmh_maisons WHERE id_division = ". $id; } // connexion à la base de données try { $bdd = new PDO('mysql:host=MONSERVEUR;dbname=MATABLE', 'MONCODE', ''); } catch(Exception $e) { exit('Impossible de se connecter à la base de données.'); } // exécution de la requête $resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo())); // résultats while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) { // je remplis un tableau et mettant l'id en index (que ce soit pour les régions ou les départements) $json[$donnees['id']][] = utf8_encode($donnees['nom']); } // envoi du résultat au success echo json_encode($json); } else { echo "J'ai un problème déjà ici"; } ?>
Problème n°1 > le paramètre GET ne semble pas être lu
Problème n°2 > lorsque j'efface les conditions de GET (pour voir au niveau de la BDD) il m'indique que la connexion a échoué, or, je suis sûre et certaine que ces informations sont correctes.
Une idée de ce qui ne va pas ?
Merci.
Partager