Bonjour à tous.
Nouveau sur ce forum, je tiens déjà à en féliciter l'ensemble des membres car il m'a servi bon nombre de fois.
Néanmoins, j'ai un souci de création d'une page d'administration d'un site.
En effet, et pour essayer d'être le plus clair possible, j'ai un panneau d'administration qui gère des produits qui sont classés après par catégorie et sous-catégorie.
Les listes des catégories et sous-catégories sont générées via une BDD (Merci AJAX ^^).
L'ensemble fonctionne bien : je peux sélectionner la catégorie souhaitée et la sous-catégorie associée. Je peux également enregistrer l'ensemble des informations dans ma Table "produits". Donc pas de problème à ce niveau.
Le soucis est le suivant : de mon panneau d'administration, je peux consulter la fiche de mon produit au cas où je voudrais en modifier un élément (catégorie et sous-catégorie inclus).
Actuellement, je vois tout ce qui a été inscrit dans ma table "produits" (via des champs de texte) et la catégorie choisie. Par contre, la sous-catégorie, impossible de la faire remonter dans cet affichage.
Voici les codes de ce que je viens d'expliquer
Code de la fiche produit
Code de validFicheProduit
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
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 <?php $idProd = 0; $nom = ""; $comCourt =""; $comLong =""; $prix =""; $idCat = ""; $idSCat = ""; if (isset($_GET['veidProd']) && is_numeric($_GET['veidProd'])) { include('../Connections/connect_admin.php'); $veidProd = $_GET['veidProd']; $reqres=mysql_query("SELECT * FROM produits WHERE produits.idProd='".mysql_real_escape_string($veidProd)."'"); $nbenr=mysql_num_rows($reqres); if ($nbenr!=0) { $a_row = mysql_fetch_array($reqres); $idProd = $a_row["idProd"]; $nom = $a_row["nomProd"]; $comCourt = $a_row["comProdCourt"]; $comLong = $a_row["comProdLong"]; $prix = $a_row["prixProd"]; $idCat = $a_row["idCat"]; $idSCat = $a_row["idSousCat"]; } mysql_close($connect_admin); } ?> <head> <script type="text/javascript"> // On utilise un fonction pour déclarer l'objet XMLHttpRequest function getXMLHttpRequest() { var xhr = null; if (window.XMLHttpRequest || window.ActiveXObject) { if (window.ActiveXObject) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { xhr = new XMLHttpRequest(); } } else { alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); return null; } return xhr; } function clic() { try { var xmlHttp = getXMLHttpRequest(); if (xmlHttp == null) { alert("Votre navigateur ne supporte pas les requêtes HTTP."); return false; } // fonction à exécuter dès réception de la réponse xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState==4 && xmlHttp.status==200) { leselect=xmlHttp.responseText; document.getElementById('selectionSCategorie').innerHTML=leselect } } xmlHttp.open("POST","choix_SousCategorie.php",true); xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); sel=document.getElementById('selectionCategorie'); idCat=sel.options[sel.selectedIndex].value; alert(idCat); xmlHttp.send("idCat="+idCat); }catch(e) {alert(e);}} </script> </head> <body> <form method="post" name="fDonnees" action="validFicheProduit.php"> <input type="hidden" name="idProd" id="idProd" value="<?php echo $idProd ?>"/> <table id="fiche"> <tr> <th>Nom du produit</th> <td><input type="text" style="width: 400px" name="nomProduit" id="nomProduit" value="<?php echo $nom ?>"/></td> </tr> <tr> <th>Commentaire Court</th> <td><textarea rows="20" name="comCourt" id="comCourt"> <?php echo $comCourt ?> </textarea></td> </tr> <tr> <tr> <th>Commentaire Long</th> <td><textarea rows="20" name="comLong" id="comLong"> <?php echo $comLong ?> </textarea></td> </tr> <tr> <tr> <th>Catégorie du produit</th> <td><select id="selectionCategorie"name="selectionCategorie" onchange="clic()"> <option value="-1">Aucun</option> <?php include ('../Connections/connect_admin.php'); $reqres=mysql_query("SELECT * FROM categorie"); while ($a_row = mysql_fetch_array($reqres)) { if ($idCat == $a_row["idCat"]) { echo "<option value='".$a_row["idCat"]."' selected='selected'>".$a_row["nomCat"]."</option>"; } else { echo "<option value='".$a_row["idCat"]."'>".$a_row["nomCat"]."</option>"; } } mysql_close($connect_admin); ?> </select> <?php echo $idCat ?></td> </tr> <tr> <tr> <tr> <th>Sous-Catégorie du produit</th> <td><select id="selectionSCategorie" name="selectionSCategorie"> <option value="-1">Sous-catégorie associée</option> </select> <?php echo $idSCat ?></td> </tr> <tr> <tr> <tr> <th>Prix du produit</th> <td><input type="text" style="width: 400px" name="prixProd" id="prixProd" value="<?php echo $prix ?>"/></td> </tr> <tr> <tr> <td colspan="2"> <input type="submit" value="Valider" name="btnValider"/> </td> </tr> </table> </form> </body>
Et enfin, le code de choix_sousCategorie
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
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 <?php if (is_string($_POST['nomProduit']) && (is_string($_POST['comCourt'])) && (is_string($_POST['comLong'])) && (is_string($_POST['prixProd'])) && (is_string($_POST['selectionCategorie'])) && (is_string($_POST['selectionSCategorie']))) { $nom = stripslashes(htmlentities($_POST["nomProduit"])); $comCourt = stripslashes(htmlentities($_POST["comCourt"])); $comLong = stripslashes(htmlentities($_POST["comLong"])); $prixProd = stripslashes(htmlentities($_POST["prixProd"])); $idCat = stripslashes(htmlentities($_POST["selectionCategorie"])); $idSCat = stripslashes(htmlentities($_POST["selectionSCategorie"])); $idProd = $_POST["idProd"]; if (is_numeric($idProd)) { include('../Connections/connect_admin.php'); if ($idProd > 0) { // On est en mode modification $reqres=mysql_query("UPDATE produits SET nomProd='".mysql_real_escape_string($nom)."',comProdCourt='".mysql_real_escape_string($comCourt)."', comProdLong='".mysql_real_escape_string($comLong)."', prixProd='".mysql_real_escape_string($prixProd)."', idCat='".mysql_real_escape_string($idCat)."', idSousCat='".mysql_real_escape_string($idSCat)."' WHERE idProd='".$idProd."'"); } else { // On est en mode ajout $reqres=mysql_query("INSERT INTO produits VALUES ('','".mysql_real_escape_string($nom)."','".mysql_real_escape_string($comCourt)."','".mysql_real_escape_string($comLong)."','".mysql_real_escape_string($prixProd)."','".mysql_real_escape_string($idCat)."','".mysql_real_escape_string($idSCat)."')"); } $nom = ""; $comCourt = ""; $comLong =""; $prixProd =""; $idCat =""; $idSCat =""; $reqres=mysql_query("SELECT * FROM produits WHERE idProd='".mysql_real_escape_string($idProd)."'"); $nbenr=mysql_num_rows($reqres); if ($nbenr!=0) { $a_row = mysql_fetch_array($reqres); $idProd = $a_row["idProd"]; $nom = $a_row["nomProd"]; $comCourt = $a_row["comProdCourt"]; $comLong = $a_row["comProdLong"]; $prix = $a_row["prixProd"]; $idCat = $a_row["idCat"]; $idSCat = $a_row["idSousCat"]; } mysql_close($connect_admin); } } ?> <head> <script type="text/javascript"> // On utilise un fonction pour déclarer l'objet XMLHttpRequest function getXMLHttpRequest() { var xhr = null; if (window.XMLHttpRequest || window.ActiveXObject) { if (window.ActiveXObject) { try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } } else { xhr = new XMLHttpRequest(); } } else { alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest..."); return null; } return xhr; } function clic() { try { var xmlHttp = getXMLHttpRequest(); if (xmlHttp == null) { alert("Votre navigateur ne supporte pas les requêtes HTTP."); return false; } // fonction à exécuter dès réception de la réponse xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState==4 && xmlHttp.status==200) { leselect=xmlHttp.responseText; document.getElementById('selectionSCategorie').innerHTML=leselect } } xmlHttp.open("POST","choix_SousCategorie.php",true); xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); sel=document.getElementById('selectionCategorie'); idCat=sel.options[sel.selectedIndex].value; alert(idCat); xmlHttp.send("idCat="+idCat); }catch(e) {alert(e);}} </script> </head> <body> <form method="post" name="fDonnees" action="validFicheProduit.php"> <input type="hidden" name="idProd" id="idProd" value="<?php echo $idProd ?>"/> <table id="fiche"> <tr> <th>Nom du produit</th> <td><input type="text" style="width: 400px" name="nomProduit" id="nomProduit" value="<?php echo $nom ?>"/></td> </tr> <tr> <th>Commentaire Court</th> <td><textarea rows="20" name="comCourt" id="comCourt"> <?php echo $comCourt ?> </textarea></td> </tr> <tr> <tr> <th>Commentaire Long</th> <td><textarea rows="20" name="comLong" id="comLong"> <?php echo $comLong ?> </textarea></td> </tr> <tr> <tr> <th>Catégorie du produit</th> <td><select id="selectionCategorie"name="selectionCategorie" onchange="clic()"> <option value="-1">Aucun</option> <?php include ('../Connections/connect_admin.php'); $reqres=mysql_query("SELECT * FROM categorie"); while ($a_row = mysql_fetch_array($reqres)) { if ($idCat == $a_row["idCat"]) { echo "<option value='".$a_row["idCat"]."' selected='selected'>".$a_row["nomCat"]."</option>"; } else { echo "<option value='".$a_row["idCat"]."'>".$a_row["nomCat"]."</option>"; } } mysql_close($connect_admin); ?> </select> <?php echo $idCat ?></td> </tr> <tr> <tr> <tr> <th>Sous-Catégorie du produit</th> <td><select id="selectionSCategorie" name="selectionSCategorie" style="display:inline"> <option value="-1">Sous-catégorie associée</option> </select> <?php echo $idSCat ?></td> </tr> <tr> <th>Prix du produit</th> <td><input type="text" style="width: 400px" name="prixProd" id="prixProd" value="<?php echo $prix ?>"/></td> </tr> <tr> <tr> <td colspan="2"> <input type="submit" value="Valider" name="btnValider"/> </td> </tr> </table> </form> </body>
Comme vous pourrez le constater, il y a une condition dans le dernier code
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 <?php $idCat = $_POST["idCat"]; include ('../Connections/connect_admin.php'); $reqres=mysql_query("SELECT * FROM sous_categorie WHERE idCat='".$idCat."'"); $nbenr=mysql_num_rows($reqres); if ($nbenr!=0) { while ($a_row = mysql_fetch_array($reqres)) { if ($idSCat == $a_row["idSousCat"]) { echo "<option value='".$a_row["idSousCat"]."' selected='selected'>".$a_row["nomSousCat"]."</option>"; } else { echo "<option value='".$a_row["idSousCat"]."'>".$a_row["nomSousCat"]."</option>"; } } mysql_close($connect_admin); else { if ($idCat==-1){ echo "<option value='-1'>Sous-catégorie associée</option>"; } else { echo "<option value='-1'>Aucune sous-catégorie associée</option>"; } } ?>
Et c'est cette condition sur "$idSCat" que je n'arrive pas à remonter dans ma fiche produit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if ($idSCat == $a_row["idSousCat"]) { echo "<option value='".$a_row["idSousCat"]."' selected='selected'>".$a_row["nomSousCat"]."</option>"; } else { echo "<option value='".$a_row["idSousCat"]."'>".$a_row["nomSousCat"]."</option>"; }
Si quelqu'un à une idée à me suggérer pour résoudre ce problème, ce serai très sympa de sa part
D'avance merci
PS : je viens de remarquer que je vous ai laissé dans le code mes étapes de contrôledésolé (ou pas, si ca vous aide ^^)
Partager