Bonjour,
Je débarque un peu dans le Post, pas évident de tout suivre depuis le début mais comment ça a avancé aujourd'hui ?
Moi j'ai juste une question, pourquoi dans tes <option> tout est en selected="selected" ?
Version imprimable
Bonjour,
Je débarque un peu dans le Post, pas évident de tout suivre depuis le début mais comment ça a avancé aujourd'hui ?
Moi j'ai juste une question, pourquoi dans tes <option> tout est en selected="selected" ?
Bonjour,
J'ai regardé ton code, tu as beaucoup de choses qui ne vont pas et je crois que un oeil de plus sera tjs mieux.
Tu vas essayé de faire par étape:
1) Ok pour mon ami Tanoak, tu as des selected partout ... tu en gardes un. ET un plus la balise option n'est jamais fermé pour chaque ligne
2) Là c chaud, tu as un formulaire dans un autre et plusieurs balise </form> sans de <form> initial !!! A part que je sais pas ce que tu souhaites faire mais ça c pas possible. Donc tu gardes un formulaire. Je te suggére ceci au niveau deta liste:
Remplaces
ParCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <tr><td> <form action="" method="post" id="chgdepartement"> <fieldset style="border: 3px double #333399"> <legend>Sélectionnez un pays</legend> <select name="nomPays" id="nomPays" onchange="document.forms['chgdepartement'].submit();"> <option value="-1">- - - Choisissez un pays- - -</option> <option value="1 selected="selected"France</option> <option value="2 selected="selected"Espagne</option> <option value="3 selected="selected"Italie</option> <div>Vous devez sélectionner un pays</div> </form> </td></tr> </fieldset> </form>
J'ai enlevé selected, placer les fin de balise > pour chaque option, enlevé le form, interverti les tr, td avec fieldsetCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <tr><td> <fieldset style="border: 3px double #333399"> <legend>Sélectionnez un pays</legend> <select name="nomPays" id="nomPays" onchange="document.forms['idDTonPremierForm'].submit();"> <option value='-1'>- - - Choisissez un pays- - -</option> <option value="1">France</option> <option value="2">Espagne</option> <option value="3">Italie</option> <div>Vous devez sélectionner un pays</div> </fieldset> </td></tr>
Le seul pb restant, c que ton premier formulaire fait une action vers une autre page, donc qd j'ai le temps je regarderais pour palier ce pb.
Bonjour Tanoak_LaCapuche,
Je n'ai pas trop avancé aujourd'hui (40° dans mon bureau). Je sais que mon formulaire est très mal fichu alors j'essaie de faire, sur les conseil d'une connaissance, un fichier 'util_data.php' où je prépare des fonctions... vaste programme (ouverture de la bdd, fermeture de la bdd et le fameux menu déroulant imbriqué pays/départements. On m'a dit que mes fichiers étaient beaucoup trop longs.
Pour mon formulaire je viens de comprendre ce que disait Ericd69 "ton script s'appelle lui-même via l'action du form...". Donc je vais tenter ça, le pb vient peut-être de là ?
En tout cas je te remercie et je poste dès que ça va pas. Je vais bosser tout le we mais là il faut que j'avance. Bon aprèm.
Evelyne
Bonjour Fench,
Vraiment je te remercie pour cette réponse et le nouveau code.
En fait dans mon formulaire je veux faire plusieurs menus déroulants qui vont chercher les données dans une bdd (pour simplifier le remplissage et éviter toute erreur).
Pour ce menu, on sélectionne un pays et les départements associés s'affichent. Les autres menus déroulants ne seront pas imbriqués.
Ca me fait 3 semaines de perdues avec ça. Je suis très en retard.
Pourtant il me semble que ce serait intéressant d'obtenir une solution car je vois que beaucoup de personnes cherchent sur les forums.
PS : je veux éviter le java et l'ajax.
Je vais suivre à la lettre vos conseils.
Evelyne
Oui le 40° au bureau il fait plutôt mal. D'ailleurs c'est pour ça qu'aujourd'hui je zone pas mal ici pas évident de travailler ;)
+2 Pour mon instructeur Fench :D, j'ai pas eu le courage comme lui de tout vérifier.
Avec ce qu'il t'as donné ça devrait aller mieux.
En fait, si tu t'inspires de ça le fonctionnel serait
1)Tu sélectionnes le pays, du coup t'as une valeur dans $nomPays.
2)Tu testes si tu as une valeur dans $nomPays, si oui tu lances la requete pour Select tes départements sinon rien.
3)T'affiches alors maintenant un Fieldset avec le pays en premier et ensuite tes départements comme il t'a donné la syntaxe pour les pays.
Et ainsi de suite... Enfin si j'ai bien compris.
Bon courage !
Edit : Si tu veux éviter le java c'est possible mais pas en dynamique comme ça. La solution serait une comboBox sur un form pour les pays qui te renvoies sur la même page avec un submit, et une autre ComboBox qui s'afficherait sur le $_POST['nomPays'] et qui se remplirait avec les départements... Pas très joli du tout je l'accorde mais je l'ai fait sur mon projet plutôt simple et pratique.
Certes, le nouveau code transmis par Fench fonctionne mais les noms des pays ne sont pas récupérés dans la bdd et il n'y a pas les départements
Je vais avoir, pour d'autres menus, des noms propres, des fonctions précises... et si je ne mets pas en menus déroulants reliés à ce qui est entré dans la bdd on va m'écrire n'importe quoi n'importe comment.
Bon, je suis tous vos conseils, je réfléchis et je remets mon ouvrage sur le métier en reprenant tout.
Merci à tous et à tout à l'heure s'il y a encore quelqu'un pour le résultat des courses.
Evelyne
C'était plus pour la syntaxe de ton field qu'il t'as mis ça.
Et après ce sera avec vérification si ton pays est sélectionné grâce au onchange alors tu rajoutes les départements de la même manière quasiment.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <?php // Tu fais ta requete sur tes pays $requete = $bdd->query('SELECT tespays FROM tatablepays'); //Tu met le premier avec le while <option value='-1'>- - - Choisissez un pays- - -</option> // Et après Tu fais ta boucle sur les pays while($donnees = $requete->fetch()) { // Et la c'est ce que Fench t'as donné ?> <option value="<?php echo $donnees[tespays'];?>"><?php echo $donnees['tespays'];?></option> <?php } $requete->closeCursor(); ?>
PS : c'est mal codé au niveau mélange php html ne t'en inspires pas c'est juste pour la méthode que je t'ai donné ça.
Oui c'est ce que je t'avais dis car tu as une form initiale dont l'action est vers action="lith_trait_form_gite.php" et ta liste select devait faire un submit sur le même formulaire et c là que ça coince.Citation:
Certes, le nouveau code transmis par Fench fonctionne mais les noms des pays ne sont pas récupérés dans la bdd et il n'y a pas les départements
Le temps que je finisse ce que j'ai à faire et que je remanipule ton code, ça va pas être super rapide (j'ai pas 40° dans mon pays mais ça se bouscule sur les demandes)
:?
[QUOTE=Tanoak_LaCapuche;6820806]C'était plus pour la syntaxe de ton field qu'il t'as mis ça.
Ouuuuh lalalalala, je crois que toutes les modifications se passent dans un autre script, je crois que tu vas l'embrouiller là :calim2:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <?php // Tu fais ta requete sur tes pays $requete = $bdd->query('SELECT tespays FROM tatablepays'); //Tu met le premier avec le while <option value='-1'>- - - Choisissez un pays- - -</option> // Et après Tu fais ta boucle sur les pays while($donnees = $requete->fetch()) { // Et la c'est ce que Fench t'as donné ?> <option value="<?php echo $donnees[tespays'];?>"><?php echo $donnees['tespays'];?></option> <?php } $requete->closeCursor(); ?>
IL FAUDRAIT QUE Evelyne nous donne les fonctionnalités des deux pages pour pouvoir aborder les modifications ;)
Je comprends pas pas besoin de submit le onchange() renvoit quelque chose au bon endroit non ?
Edit : Pardon oui c'est vrai j'étais toujours au début ou elle faisait cela sur la même page au temps pour moi.
j'avais pas vu tout ce que tu avais tripatouillé... :sm:
déjà en haut de ta page tu as un coix à faire soit le charset c'est iso soit c'est utf...
faut que tu mettes en accord la déclaration xml et la meta en dessous
essaye mon code:
fais toi un fichier php à part en reprenant tout jusqu'à body puis tu y mets mon code et derrière "</body></html>"Code:
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 <?php $idp=(empty($_POST['nomPays'])?-1:intval($_POST['nomPays'])); $idp=(($idp<-1)||($idp==0)?-1:$idp); $iddp=(empty($_POST['nomDepartement'])?-1:intval($_POST['nomDepartement'])); $iddp=(($iddp<-1)||($iddp==0)?-1:$iddp); $connexion = mysql_pconnect($serveur, $admin, $mdp); if($connexion) { if(mysql_select_db($base, $connexion)) { $rech_pays = mysql_query("SELECT `id_pays`, `nomPays` FROM `PAYS` ORDER BY `id_pays`"); if($rech_pays) { echo"<form action=\"\" method=\"post\" id=\"chgdepartement\"> <fieldset style=\"border: 3px double #333399\"> <legend>Sélectionnez un pays</legend> <select name=\"nomPays\" id=\"nomPays\" onchange=\"document.forms['chgdepartement'].submit();\"> <option value='-1'>- - - Choisissez un pays- - -</option>"; while($ligne = mysql_fetch_assoc($rech_pays)) echo"<option value=\"",$ligne['id_pays'],"\" ".($idp == $ligne['id_pays'])? " selected=\"selected\"":null.">",$ligne['nomPays'],"</option>"; echo'</select>'; mysql_free_result($rech_pays); if($idp!=-1) { $rech_departement = mysql_query("SELECT `id_departement`, `nomDepartement` FROM `DEPARTEMENT` WHERE `id_pays` = $idp ORDER BY `id_departement`"); if($rech_departement) { echo"<select name=\"nomDepartement\" id=\"nomDepartement\" onchange=\"document.forms['chgdepartement'].submit();\"> <option value=\'-1'>- - - Choisissez un département- - -</option>"; while($ligne = mysql_fetch_assoc($rech_departement)) echo"<option value=\"",$ligne['id_departement'],"\" ".($iddp == $ligne['id_departement'])? " selected=\"selected\"":null.">",$ligne['nomDepartement'],"</option>"; echo'</select>'; mysql_free_result($rech_departement); if($iddp!=-1) { //actions si les champs sont sélectionnés } } else echo"<div>Une erreur c'est produite:".mysql_error().'</div>'; } else { echo"<div>Vous devez sélectionner un pays</div>"; } echo"</fieldset></form>"; } else echo"<div>Une erreur c'est produite:".mysql_error().'</div>'; } } ?>
comme ça tu testes que cette partie... et mets l'adresse de se script dans action de form!!!! sinon t'auras jamais les départements...:ccool:
Quand vous parlez des 2 pages, je pense qu'il s'agit de mon formulaire et du fichier de traitement du formulaire ?
Je vous joins ça ci-dessous. Là je rentre me mettre au frais et je reprends tout avec... un papier et un crayon. Je poste le résultat ce soir. Je veux tout bien comprendre. Précision : je débute et je me suis basée sur les cours du Zéro essentiellement. C'est très ardu mais passionnant.
Encore un grand merci,
Evelyne
Code du formulaire PHP :
Code:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184 <?php echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n"); /* Variables de connexion : ajustez ces paramètres selon votre propre environnement */ $serveur = "localhost"; $admin = "root"; $mdp = "root"; $base = "lithotheque"; ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <link rel="stylesheet" href="./lith_style_form.css" /> <title>Lithothèque, formulaire gîtes</title> </head> <body> <header> <img src="../images/logo_traces.png" alt="logo Traces" id="logo" /> <h1>L i t h o t h è q u e</h1> </header> <div id="banniere_image"></div> <p></p> <div id="separateur"></div> <section> <form method="post" action="lith_trait_form_gite.php"> <fieldset> <legend><h2>Formulaire gîtes</h2></legend> <!-- Titre du fieldset --> <table> <tr><td colspan="5"align="center"><label for="faire">Action</label> <select name="faire" id="faire"> <p> <option value="creer">créer</option> <option value="visualiser">visualiser</option> <option value="supprimer">supprimer</option> <option value="modifier">modifier</option> </select> <input type="submit" /> <input type="reset" /> </p></td> </tr> <tr> <td colspan="5" align="center"><h3>numéro gîte</h3> <input type="text" name="codePays" size="5" maxlength="5"> <input type="text" name="codeDepartement" size="5" maxlength="5"> <input type="text" name="codeCommune" size="5" maxlength="5"> <input type="text" name="numGite" size="5" maxlength="5"> </td></tr> <th><td colspan="2" align="left"><strong>Localisation</strong></th><th><strong>Gîte</strong><td colspan="2" align="center"></th> <tr><td> <fieldset style="border: 3px double #333399"> <legend>Sélectionnez un pays</legend> <select name="nomPays" id="nomPays" onchange="document.forms['idDTonPremierForm'].submit();"> <option value='-1'>- - - Choisissez un pays- - -</option> <option value="1">France</option> <option value="2">Espagne</option> <option value="3">Italie</option> <div>Vous devez sélectionner un pays</div> </fieldset> </td></tr> <tr> <td>commune</td> <td align="left"><input type="text" name="nomCommune" size="35" maxlength="35"></td> <td>date_fiche</td> <td align="left"><input type="text" name="dateCreaFicheG" size="10" maxlength="10"></td> </tr> <tr> <td>lieu-dit</td> <td align="left"><input type="text" name="nomLieuDit" size="35" maxlength="35"></td> <td>auteur fiche</td><td align="left"><input type="text" name="createurFicheG" size="35" maxlength="35"></td> </tr> <tr> <td>nom générique</td> <td align="left"><input type="text" name="nomGenerique" size="35" maxlength="35"></td> <td>nom saisie fiche</td><td align="left"><input type="text" name="nomSaisieFicheG" size="35" maxlength="35"></td> </tr> <tr> <td>carte IGN et précision</td> <td align="left"><input type="text" name="numCarteIgn" size="35" maxlength="35"></td> <td align="left"><label for="natureRche">nature roche</label></td> <td> <select name="natureRoche" id="natureRoche" tabindex="40"> <option value="silex">silex</option> <option value="quartz">quartz</option> <option value="cristal">cristal de roche</option> <option value="chaille">chaille</option> </optgroup> </select></td> </tr> <tr> <td>carte BRGM et précision</td> <td align="left"><input type="text" name="numCarteBrgm" size="35" maxlength="35"></td> <td colspan="2" align="left"><label for="typeGite">type gîte</label> <input type="radio" name="typeGite" value="primaire" id="primaire" /> <label for="primaire">primaire</label> <input type="radio" name="typeGite" value="secondaire" id="secondaire" /> <label for="secondaire">secondaire</label></td> </tr> <tr> <td>prospecteur</td> <td align="left"><input type="text" name="prospecteur" size="35" maxlength="35"></td> <td>étage</td> <td align="left"><input type="text" name="nomEtage" size="35" maxlength="35px"></td> </tr> <th>Lithothèque</th><th>Documentation</th> <tr> <td>Z</td> <td align="left"><input type="text" name="altitudeGite1" size="10" maxlength="10"></td> <td>complément étage</td> <td align="left"><textarea name="descriptionComplementEtage" id="descriptionComplementEtage" rows="1" cols="27"></textarea></td> </tr> <tr> <td>Z2</td> <td align="left"><input type="text" name="altitudeGite2" size="10" maxlength="10"></td><td>milieu de formation</td> <td align="left"><textarea name="nomMilieu" id="nomMilieu" rows="1" cols="27"></textarea></td> </tr> <tr> <td>X</td> <td align="left"><input type="text" name="corX1Gite" size="10" maxlength="10"></td> <td>géomorphologie</td> <td align="left"><textarea name="geomorphologie" id="geomorphologie" rows="1" cols="27"></textarea></td> </tr> <tr> <td>X2</td> <td align="left"><input type="text" name="corX2Gite" size="10" maxlength="10"></td> <td align="left">description du matériau</td> <td align="left"> <textarea name="materiau" id="materiau" cols="27" rows="1" tabindex="50"></textarea></td> </tr> <tr> <td>Y</td> <td align="left"><input type="text" name="corY1Gite" size="10" maxlength="10"></td> <td align="left">bibliographie</td> <td align="left"> <textarea name="biblio" id="biblio" cols="27" rows="1" tabindex="50"></textarea></td> </tr> <tr> <td>Y2</td> <td align="left"><input type="text" name="corY2Gite" size="10" maxlength="10"></td> <td align="left">liste échantillons</td> <td align="left"> <textarea name="echantillons" id="echantillons" cols="27" rows="1" tabindex="50"></textarea></td> </tr> <tr> <td>Photographies :</td> <td align="center"><a href="images/gite.png"><img src="images/vignette_gite.png" alt="gite" title="cliquer pour agrandir" /></a></td> <td align="center"><a href="images/gite.png"><img src="images/vignette_gite.png" alt="gite" title="cliquer pour agrandir" /></a></td> <td align="center"><a href="images/gite.png"><img src="images/vignette_gite.png" alt="gite" title="cliquer pour agrandir" /></a></td> </tr> </table> </fieldset> </form> </section> <p></p> <div id="separateur2"></div> <p></p> <footer> <table> <tr> <td><a href="index.html">Accueil</a></td><td><img src="images/separateur_ver.png" /> <td><a href="arch_contacts.html">Contacts</a></td><td><img src="images/separateur_ver.png" /></td> <td><a href="arch_mentions_legales.html">Mentions légales</a></td> <td><img src="images/separateur_ver.png" /></td><td><a href="arch_plan_site.html">Plan du site</a></td><td><img src="images/separateur_ver.png" /></td><td><a href="arch_admin.html">Administration</a></td></tr></table> </footer> //<tr><td rowspan="10" align="left"><img src="images/silex_02.png"></td></tr> </body> </html>
Code du traitement du formulaire (en cours, erreurs à reprendre) :
Code:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131 <?php $faire = $_POST['faire']; $codePays = $_POST['codePays']; $codeDepartement = $_POST['codeDepartement']; $codeCommune = $_POST['codeCommune']; $numGite = $_POST['numGite']; $nomPays = $_POST['nomPays']; $nomDepartement = $_POST['nomDepartement']; // $nomCommmune = $_POST['nomCommmune']; $dateCreaFicheG = $_POST['dateCreaFicheG']; $nomLieuDit = $_POST['nomLieuDit']; $createurFicheG = $_POST['createurFicheG']; $nomGenerique = $_POST['nomGenerique']; $nomSaisieFicheG = $_POST['nomSaisieFicheG']; $numCarteIgn = $_POST['numCarteIgn']; //$precisionCarteIgn = $_POST['precisionCarteIgn']; $natureRoche = $_POST['natureRoche']; $numCarteBrgm = $_POST['numCarteBrgm']; $typeGite = $_POST['typeGite']; $prospecteur = $_POST['prospecteur']; $nomEtage = $_POST['nomEtage']; $descriptionComplementEtage = $_POST['descriptionComplementEtage']; $altitudeGite1 = $_POST['altitudeGite1']; $altitudeGite2 = $_POST['altitudeGite2']; $nomMilieu = $_POST['nomMilieu']; $corX1Gite = $_POST['corX1Gite']; $geomorphologie = $_POST['geomorphologie']; $corX2Gite = $_POST['corX2Gite']; $materiau = $_POST['materiau']; $corY1Gite = $_POST['corY1Gite']; $corY2Gite = $_POST['corY2Gite']; $biblio = $_POST['biblio']; $echantillons = $_POST['echantillons']; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <title>Nouvel enregistrement gîte : echo</title> <meta charset="utf-8" /> <link rel="stylesheet" href="lith_style_form.css" /> </head> <body> <H1>Lithothèque TRACES</H1> <H2>Le gîte a bien été créé</H1> <?php echo '<p>Formulaire gîte créé à '; echo date('H:i, \l\e j-m-Y'); echo '</p>'; ?> <?php echo 'Code pays (norme ISO 3166-1) : ' . $codePays; ?> <br /> <?php echo 'Code département : ' . $codeDepartement; ?> <br /> <?php echo 'Code commune (code INSEE) : ' . $codeCommune; ?> <br /> <?php echo 'N° de gîte : ' . $numGite; ?> <br /> <?php echo 'Nom pays : ' . $nomPays; ?> <br /> <?php echo 'Nom département : ' . $nomDepartement; ?> <br /> <?php echo 'Date création fiche : ' . $dateCreaFicheG; ?> <br /> <?php echo 'Nom lieu-dit : ' . $nomLieuDit; ?> <br /> <?php echo 'Auteur fiche : ' . $createurFicheG; ?> <br /> <?php echo 'Nom générique : ' . $nomGenerique; ?> <br /> <?php echo 'Nom saisie fiche : ' . $nomSaisieFicheG; ?> <br /> <?php echo 'Carte IGN et précision : ' . $numCarteIgn; ?> <br /> <?php echo 'Nature roche : ' . $natureRoche; ?> <br /> <?php echo 'Carte BRGM et précision : ' . $numCarteBrgm; ?> <br /> <?php echo 'Type de gîte : ' . $typeGite; ?> <br /> <?php echo 'Prospecteur : ' . $prospecteur; ?> <br /> <?php echo 'Etage : ' . $nomEtage; ?> <br /> <?php echo 'Complément étage : ' . $descriptionComplementEtage; ?> <br /> <?php echo 'Z : ' . $altitudeGite1; ?> <br /> <?php echo 'Z2 : ' . $altitudeGite2; ?> <br /> <?php echo 'Nom milieu : ' . $nomMilieu; ?> <br /> <?php echo 'X : ' . $corX1Gite; ?> <br /> <?php echo 'Géomorphologie : ' . $geomorphologie; ?> <br /> <?php echo 'X2 : ' . $corX2Gite; ?> <br /> <?php echo 'Description matériau in situ : ' . $materiau; ?> <br /> <?php echo 'Y : ' . $corY1Gite; ?> <br /> <?php echo 'Biblio : ' . $biblio; ?> <br /> <?php echo 'Y2 : ' . $corY2Gite; ?> <br /> <?php echo 'Echantillons : ' . $echantillons; ?> <br /> <?php try { $bdd = new PDO('mysql:host=localhost;dbname=lithotheque', 'root', 'root'); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } ?> <?php // on teste si les variables du formulaire sont bien déclarées if (isset($_POST['numGite']) && isset($_POST['nomLieuDit']) && isset($_POST['altitudeGite1']) && isset($_POST['altitudeGite2']) && isset($_POST['corX1Gite']) && isset($_POST['corX2Gite']) && isset($_POST['corY1Gite']) && isset($_POST['corY2Gite']) && isset($_POST['typeGite']) && isset($_POST['geomorphologie']) && isset($_POST['nomGenerique']) && isset($_POST['dateCreaFicheG']) && isset($_POST['createurFicheG'])) ?> <?php $req = $bdd->prepare('INSERT INTO GITE(numGite, nomLieuDit, altitudeGite1, altitudeGite2, corX1Gite, corX2Gite, corY1Gite, corY2Gite, typeGite, geomorphologie, nomGenerique, dateCreaFicheG, createurFicheG) VALUES(:numGite, :nomLieuDit, :altitudeGite1, :altitudeGite2, :corX1Gite, :corX2Gite, :corY1Gite, :corY2Gite, :typeGite, :geomorphologie, :nomGenerique, :dateCreaFicheG, :createurFicheG)'); $req->execute(array( 'numGite' => $numGite, 'nomLieuDit' => $nomLieuDit, 'altitudeGite1' => $altitudeGite1, 'altitudeGite2' => $altitudeGite2, 'corX1Gite' => $corX1Gite, 'corX2Gite' => $corX2Gite, 'corY1Gite' => $corY1Gite, 'corY2Gite' => $corY2Gite, 'typeGite' => $typeGite, 'geomorphologie' => $geomorphologie, 'nomGenerique' => $nomGenerique, 'dateCreaFicheG' => $dateCreaFicheG, 'createurFicheG' => $createurFicheG )); ?> <?php echo 'apres requete sql' ?> <br /> <table> <tr> <td><a href="index.html">Accueil</a></td><td><img src="images/separateur_ver.png" /> <td><a href="arch_contacts.html">Contacts</a></td><td><img src="images/separateur_ver.png" /></td> <td><a href="arch_mentions_legales.html">Mentions légales</a></td> <td><img src="images/separateur_ver.png" /></td><td><a href="arch_plan_site.html">Plan du site</a></td><td><img src="images/separateur_ver.png" /></td><td><a href="arch_admin.html">Administration</a></td></tr></table> </body> </html>
Bon en faisant simple, le dernier code d'Evelyne sur les champs à remplir peut resté comme cela dans un même formulaire.
Changes juste le
EnCode:
1
2 <select name="nomPays" id="nomPays" onchange="document.forms['chgdepartement'].submit();">
Puisque tout se passe dans la page "lith_trait_form_gite.php" pour la modification, non ?Code:
1
2 <select name="nomPays" id="nomPays">
La sélection du pays ne change rien dans cette page et je pense que c la meilleur solution.
PS: autre mélange dans le code ici
Reste à avoir la page des modifications !Code:
1
2 Aie aie ici ya mélange de balises<th><td>Localisation</th><th>Gîte<td></th>
Bon j'ai commencé la lecture de ton code de mis à jour :cry:
Effectivement il faut que tu vérifies tes champs, exemple:
SinonCode:
1
2
3
4
5
6
7
8
9
10
11
12
13 $faire = $_POST['faire']; // ok $codePays = $_POST['codePays']; // ok $codeDepartement = $_POST['codeDepartement']; //ok $codeCommune = $_POST['codeCommune']; //ok $numGite = $_POST['numGite']; //ok $nomPays = $_POST['nomPays']; // ok $nomDepartement = $_POST['nomDepartement']; // n'existe pas dans l'autre formulaire // $nomCommmune = $_POST['nomCommmune']; // lui existe mais pour le mettre en commantaires $dateCreaFicheG = $_POST['dateCreaFicheG']; // ok $nomLieuDit = $_POST['nomLieuDit']; // ok // A continuer
Et pour le nomPays, bein je le vois nul part, tu ne modifies aucunes tables et pourtant tu dois avoir $nomPays qui est récupéréCode:
1
2
3 // on teste si les variables du formulaire sont bien déclarées // j'ai regardé elle y sont pas toutes, pourquoi ?
Bonsoir ericd69, Fench, Tanoak_LaCapuche,
Un grand merci à vous 3 pour votre aide, très sympa de plus.
J'ai testé le nouveau script de ericd69. J'ai respecté les conseils à la lettre : toujours aucun pays dans le menu déroulant "Pays" ? J'ai le menu déroulant mais vide ?
C'est pas grave, je continue demain. Le pb doit venir de mon fichier de traitement de formulaire auquel je n'ai pas assez prêté attention et que je vais reprendre avec les conseils de Fench et Tanoak LaCapuche.
Bien vu ericd69 pour l'utf-8, je ne comprenais pas d'où venait le pb.
Je mets ci-dessous mon code rectifié où je pointe vers le fichier de traitement du formulaire. Désolée d'avoir modifié ton code mais il faut bien essayer d'avancer ?
Là, je sature. Je vois bien les pbs sur mon brouillon avec une feuille et un crayon (c'est le principal je pense ?) mais ça ne marche pas quand je passe sur l'ordi.
Très bonne soirée à vous 3 et à demain pour un code propre, j'espère, pour mes 2 fichiers : formulaire et traitement_formulaire.
J'envie votre facilité avec tout ça.
Evelyne
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 echo"<form action=\"\" method=\"post\" id=\"lith_trait_form_gite.ph\"> <fieldset style=\"border: 3px double #333399\"> <legend>Sélectionnez un pays</legend> <select name=\"nomPays\" id=\"nomPays\" onchange=\"document.forms['lith_trait_form_gite.ph'].submit();\"> <option value='-1'>- - - Choisissez un pays- - -</option>"; while($ligne = mysql_fetch_assoc($rech_pays)) echo"<option value=\"",$ligne['id_pays'],"\" ".($idp == $ligne['id_pays'])? " selected=\"selected\"":null.">",$ligne['nomPays'],"</option>"; echo'</select>'; mysql_free_result($rech_pays); if($idp!=-1) { $rech_departement = mysql_query("SELECT `id_departement`, `nomDepartement` FROM `DEPARTEMENT` WHERE `id_pays` = $idp ORDER BY `id_departement`"); if($rech_departement) { echo"<select name=\"nomDepartement\" id=\"nomDepartement\" onchange=\"document.forms['chgdepartement'].submit();\"> <option value=\'-1'>- - - Choisissez un département- - -</option>"; while($ligne = mysql_fetch_assoc($lith_trait_form_gite)) echo"<option value=\"",$ligne['id_departement'],"\" ".($iddp == $ligne['id_departement'])? " selected=\"selected\"":null.">",$ligne['nomDepartement'],"</option>"; echo'</select>'; mysql_free_result($rech_departement); if($iddp!=-1) {
Avant d'aller au lit, d'un point de vue plus global et certainement très naïf, je ne comprends pas pourquoi tout cela est tellement compliqué (3 semaines de boulot pour rien).
Récupérer des lignes avec une requête MySql dans une bdd pour alimenter un menu déroulant, et en fonction des résultats de cette première requête, en afficher une 2ème sous forme d'un second menu déroulant résultant d'une seconde requête SQL ??? Là je comprends pas.
Je dois vraiment être très naïve ?
En tout cas je m'accroche et vous soumet des fichiers demain si vous êtes toujours là.
Très bonne soirée et merci,
Evelyne
alors voila le code qui marche:
j'avais pas vu tous les trucs que tu avais changé, comme ces virgules (qui sont un opérateur au passage) que tu as mis au niveau des echo générant les <option>Code:
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
57
58
59
60
61 <?php $serveur = "localhost"; $admin = "root"; $mdp = "root"; $base = "lithotheque"; $idp=(empty($_POST['nomPays'])?-1:intval($_POST['nomPays'])); $idp=(($idp<-1)||($idp==0)?-1:$idp); $iddp=(empty($_POST['nomDepartement'])?-1:intval($_POST['nomDepartement'])); $iddp=(($iddp<-1)||($iddp==0)?-1:$iddp); $connexion = mysql_pconnect($serveur, $admin, $mdp); if($connexion) { if(mysql_select_db($base, $connexion)) { $rech_pays = mysql_query("SELECT `id_pays`, `nomPays` FROM `PAYS`"); if($rech_pays) { echo"<form action=\"\" method=\"post\" id=\"chgdepartement\"> <fieldset style=\"border: 3px double #333399\"> <legend>Sélectionnez un pays</legend> <select name=\"nomPays\" id=\"nomPays\" onchange=\"document.forms['chgdepartement'].submit();\"> <option value='-1'>- - - Choisissez un pays- - -</option>"; while($ligne = mysql_fetch_assoc($rech_pays)) echo"<option value=\"{$ligne['id_pays']}\" ".(($idp == $ligne['id_pays'])?" selected=\"selected\"":null).">{$ligne['nomPays']}</option>"; echo'</select>'; mysql_free_result($rech_pays); if($idp!=-1) { $rech_departement = mysql_query("SELECT `id_departement`, `nomDepartement` FROM `DEPARTEMENT` WHERE `id_pays` = $idp"); if($rech_departement) { echo"<select name=\"nomDepartement\" id=\"nomDepartement\" onchange=\"document.forms['chgdepartement'].submit();\"> <option value=\'-1'>- - - Choisissez un département- - -</option>"; while($ligne = mysql_fetch_assoc($rech_departement)) echo"<option value=\"{$ligne['id_departement']}\" ".(($iddp == $ligne['id_departement'])?" selected=\"selected\"":null).">{$ligne['nomDepartement']}</option>"; echo'</select>'; mysql_free_result($rech_departement); if($iddp!=-1) { //actions si les champs sont sélectionnés } } else echo"<div>Une erreur c'est produite:".mysql_error().'</div>'; } else { echo"<div>Vous devez sélectionner un pays</div>"; } echo"</fieldset></form>"; } else echo"<div>Une erreur c'est produite:".mysql_error().'</div>'; } else echo"<div>Une erreur c'est produite:".mysql_error().'</div>'; } else echo"<div>Une erreur c'est produite:".mysql_error().'</div>'; ?>
du coup, quand j'ai vu ça j'ai repris mon bout de code initial que j'avais créé en 5mn à ma première intervention et, en fait, il manquait juste un ( sur chaque echo qui génère un <option>, juste devant les opérateurs ()?:
je l'ai trouvé tout de suite grace à un très bon EDI pour faire du dev: eclipse... tu as un package spécial pour le php
si tu veux vraiment faire un truc sérieux faut abandonner les pauvre traitement de texte avec coloration syntaxique... ça c'est bon pour faire des bout de code vite fait mais ça te montrera pas ce genre d'erreurs... et tu risque de relire plein de fois ton code en les voyant pas...
ensuite vu que tu utilises pdo, abandonne l'extension mysql... ne trouve tu pas stupide de mixer différente technologie dont une actuelle et l'autre (les mysql_...) obsolète? surtout que tu as l'air de bien utiliser pdo
:zoubi:
ensuite TU NE PEUX PAS GERER TON FORMULAIRE SUR 2 FICHIERS PHP SEPARES car:
- ton formulaire se passe des $_post pour mettre à jour des trucs par rapport à la valeur d'autres...
- tu ne peux avoir qu'un seul action dans ton formulaire... sauf à faire du JavaScript qui le modifie dynamiquement mais c'est chercher à se compliquer la vie. il est très cohérent de le faire en un seul fichier aussi
mais c'est pas un soucis de faire le traitement en interne...
il serait bon que tu abandonnes le <table> au profit de css et de classe de style... un tableau n'as encore de sens pour de la mise en page que si tu dois obligatoire lister des choses en ayant besoin d'un alignement horizontal ET vertical simultané sinon il peut être remplacé avantageusement par du style...
et je veux PLUS JAMAIS te voir mixer du html et du php n'importe comment...
on utilise du html pur dans une page php que pour des grandes parties fixes (généralement jusqu'à <body> puis le bas de page si rien n'est dynamique...
pourquoi? car tu pourris la relecture et tu risque des confusions:
le if n’empêchera pas ici d'afficher le <span>, on obtient:Code:<div><?php if(false){?><span></span><?php}?></div>
c'est piégeur et ça pousse à une mauvaise indentation du php qui est un bon moyen de de voir clairement les (), {}, etc...Code:<div><span></span></div>
bref là tu as un bon départ avec ça...
à toi de voir comment tu veux réorganiser le reste du formulaire (l'idée ici c'est de l'afficher là où il y a le commentaire et de mettre le traitement php derrière)...
voilà tu as tout pour avancer...:ccool:
allez je regarde le code d'arrivé
Pour certaines fonctionnalités, pour ma part je garde mysql ouvert... deja prendre le temps de tout passer en PDO, et aussi, comme ma class d'apel test mysql puis pdo, j'ai po tros le choix...Citation:
ensuite vu que tu utilises pdo, abandonne l'extension mysql... ne trouve tu pas stupide de mixer différente technologie dont une actuelle et l'autre (les mysql_...) obsolète? surtout que tu as l'air de bien utiliser pdo
pour ce qui est de la longueur de la requête, tu as un problème, qui en soit n'en est pas un, la requête INSERT à 10 paramètre, est comme mysql déprécié... donc à toi de voir... mais tu peu faire bien mieux que tout ca :)
Bonjour tout le monde,
Merci pour les derniers posts tardifs qui m'apportent encore plein d'infos et de conseils.
Je reprends tout tout tout et poste le résultat dès que possible.
Ericd69 merci pour le nouveau code : CA MARCHE !!! J'ai enfin mes départements qui s'affichent.
Je vois pour eclipse et je reprends mon formulaire de A à Z avec des div au lieu du <table>.
J'ai bien compris pour le traitement du formulaire : pas de fichier php à part. Je vais faire un include pour éviter un code trop long.
Par contre là où je suis embêtée c'est de n'avoir qu'un seul "action" pour un formulaire car je voulais faire plusieurs menus déroulants comme celui de "pays" ??? Je réfléchis à la question.
Plein de mercis et très bonne journée,
Evelyne
ça t'oblige juste à travailler de manière hiérarchique...
le truc dépendant n'apparait que si le truc déclencheur c'est bien passé... et est inclus dedans...
faut appliquer le principe des poupées russes plus tu es dépendant d'un ensemble de chose plus tu es dans un bloc de code inclus...
et là je te conseil de bien indenter ton code comme moi comme ça tu vois bien mieux les choses :zoubi:
à la limite tu peux mettre les autres parties de ton formulaires dans des php séparé et les inclure dans celui-là... ça rendra ton code plus modulaire et facile à relire
courage c'est pas dur