Bonsoir, alors voilà, je suis actuellement entrain de coder une appli web en PHP POO avec l'architecture MVC.
Je suis entrain de me pencher sur la création du formulaire d'inscription et l'insertion des valeurs récupérées dans ma BDD MySQL.
Voici mon code pour ma "view" de InscriptionAsso :
Puis, mon code pour le Controller de InscriptionAsso :
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
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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351 <div class="row"> <div class="col-sm-6 nopadding-lr dark-wrapper remove-opacqued-bg opaqued background-cover match-height" style="background-image: url('assets/img/bg/space.jpg');" data-mh="promo-inner"> <div class="dark-opaqued section-inner pad-sides-60 text-right promo-inner"></div> </div> <div class="col-sm-6 nopadding-lr match-height" data-mh="promo-inner"> <div class="section-inner pad-sides-60 promo-inner"> <div class="col-sm-8 col-sm-offset-2"> <div class="title"> <h3>Inscrivez-vous dès maintenant !</h3> </div><br></br> <form method="post" action="inscriptionAsso&status=new" > <div class="form-group"> <label for="userNom">Entrez le nom de votre association: *</label> <input type="text" class="form-control" id="userNom" name="userNom" placeholder="ex : nom association"> </div><br></br> <div class="form-group"> <label for="adEmail">Entrez votre Email: *</label> <input type="email" class="form-control" id="adEmail" name="adEmail" placeholder="ex : <a href="mailto:nom@exemple.com">nom@exemple.com</a>"> </div><br></br> <div class="form-group"> <label for="adTelephone">Entrez votre numéro de téléphone (facultatif):</label> <input type="text" class="form-control" id="adTelephone" name="adTelephone" placeholder="ex : 0344123456"> </div><br></br> <div class="form-group"> <label for="assoType">Choisissez le type de votre association: *</label> <select class="checkbox" name="assoType"> <option>Culture/Tourisme/Echanges internationaux</option> <option>Sport</option> <option>Loisir/Jeunesse</option> <option>Professionnel/Emploi</option> <option>Santé/Famille</option> <option>Social</option> <option>Formation/Education</option> <option>Logement/Habitat</option> </select> </div><br></br> <div class="form-group"> <label for="adAdresse">Entrez votre adresse: *</label> <input type="text" class="form-control" id="adAdresse" name="adAdresse" placeholder="ex : 4 rue des moulins"> </div><br></br> <div class="form-group"> <label for="adCP">Entrez votre code postal: *</label> <input type="text" class="form-control" id="adCP" name="adCP" placeholder="ex : 75012"> </div><br></br> <div class="form-group"> <label for="adVille">Entrez votre ville: *</label> <input type="text" class="form-control" id="adVille" name="adVille" placeholder="ex : Paris"> </div><br></br> <div class="form-group"> <label for="adPays">Choisissez votre pays: *</label> <select class="checkbox" name="adPays"> <option value="AF">Afghanistan</option> <option value="ZA">Afrique du Sud</option> <option value="AL">Albanie</option> <option value="DZ">Algérie</option> <option value="DE">Allemagne</option> <option value="MK">Ancienne République yougoslave de Macédoine</option> <option value="AD">Andorre</option> <option value="AO">Angola</option> <option value="AI">Anguilla</option> <option value="AQ">Antarctique</option> <option value="AG">Antigua-et-Barbuda</option> <option value="AN">Antilles néerlandaises</option> <option value="SA">Arabie saoudite</option> <option value="AR">Argentine</option> <option value="AM">Arménie</option> <option value="AW">Aruba</option> <option value="AU">Australie</option> <option value="AT">Autriche</option> <option value="AZ">Azerbaïdjan</option> </optgroup> <optgroup label="B"> <option value="BS">Bahamas</option> <option value="BH">Bahreïn</option> <option value="BD">Bangladesh</option> <option value="BB">Barbade</option> <option value="BE">Belgique</option> <option value="BZ">Belize</option> <option value="BJ">Bénin</option> <option value="BM">Bermudes</option> <option value="BT">Bhoutan</option> <option value="BY">Biélorussie</option> <option value="BO">Bolivie</option> <option value="BA">Bosnie-et-Herzégovine</option> <option value="BW">Botswana</option> <option value="BR">Brésil</option> <option value="BN">Brunei Darussalam</option> <option value="BG">Bulgarie</option> <option value="BF">Burkina Faso</option> <option value="BI">Burundi</option> </optgroup> <optgroup label="C"> <option value="KH">Cambodge</option> <option value="CM">Cameroun</option> <option value="CA">Canada</option> <option value="CV">Cap-Vert</option> <option value="CL">Chili</option> <option value="CN">Chine</option> <option value="CY">Chypre</option> <option value="CO">Colombie</option> <option value="KM">Comores</option> <option value="CG">Congo</option> <option value="CR">Costa Rica</option> <option value="CI">Côte d'Ivoire</option> <option value="HR">Croatie</option> <option value="CU">Cuba</option> </optgroup> <optgroup label="D"> <option value="DK">Danemark</option> <option value="DJ">Djibouti</option> <option value="DM">Dominique</option> </optgroup> <optgroup label="E"> <option value="EG">Égypte</option> <option value="SV">El Salvador</option> <option value="AE">Émirats arabes unis</option> <option value="EC">Équateur</option> <option value="ER">Érythrée</option> <option value="ES">Espagne</option> <option value="EE">Estonie</option> <option value="FM">États fédérés de Micronésie</option> <option value="US">États-Unis</option> <option value="ET">Éthiopie</option> </optgroup> <optgroup label="F"> <option value="FJ">Fidji</option> <option value="FI">Finlande</option> <option value="FR">France</option> </optgroup> <optgroup label="G"> <option value="GA">Gabon</option> <option value="GM">Gambie</option> <option value="GE">Géorgie</option> <option value="GS">Géorgie du Sud-et-les Îles Sandwich du Sud</option> <option value="GH">Ghana</option> <option value="GI">Gibraltar</option> <option value="GR">Grèce</option> <option value="GD">Grenade</option> <option value="GL">Groenland</option> <option value="GP">Guadeloupe</option> <option value="GU">Guam</option> <option value="GT">Guatemala</option> <option value="GN">Guinée</option> <option value="GQ">Guinée équatoriale</option> <option value="GW">Guinée-Bissau</option> <option value="GY">Guyane</option> <option value="GF">Guyane française</option> </optgroup> <optgroup label="H"> <option value="HT">Haïti</option> <option value="HN">Honduras</option> <option value="HK">Hong Kong</option> <option value="HU">Hongrie</option> </optgroup> <optgroup label="I"> <option value="BV">Ile Bouvet</option> <option value="CX">Ile Christmas</option> <option value="NF">Île Norfolk</option> <option value="PN">Île Pitcairn</option> <option value="AX">Iles Aland</option> <option value="KY">Iles Cayman</option> <option value="CC">Iles Cocos (Keeling)</option> <option value="CK">Iles Cook</option> <option value="FO">Îles Féroé</option> <option value="HM">Îles Heard-et-MacDonald</option> <option value="FK">Îles Malouines</option> <option value="MP">Îles Mariannes du Nord</option> <option value="MH">Îles Marshall</option> <option value="UM">Îles mineures éloignées des États-Unis</option> <option value="SB">Îles Salomon</option> <option value="TC">Îles Turques-et-Caïques</option> <option value="VG">Îles Vierges britanniques</option> <option value="VI">Îles Vierges des États-Unis</option> <option value="IN">Inde</option> <option value="ID">Indonésie</option> <option value="IQ">Iraq</option> <option value="IE">Irlande</option> <option value="IS">Islande</option> <option value="IL">Israël</option> <option value="IT">Italie</option> </optgroup> <optgroup label="J"> <option value="LY">Jamahiriya arabe libyenne</option> <option value="JM">Jamaïque</option> <option value="JP">Japon</option> <option value="JO">Jordanie</option> </optgroup> <optgroup label="K"> <option value="KZ">Kazakhstan</option> <option value="KE">Kenya</option> <option value="KG">Kirghizistan</option> <option value="KI">Kiribati</option> <option value="KW">Koweït</option> </optgroup> <optgroup label="L"> <option value="LS">Lesotho</option> <option value="LV">Lettonie</option> <option value="LB">Liban</option> <option value="LR">Libéria</option> <option value="LI">Liechtenstein</option> <option value="LT">Lituanie</option> <option value="LU">Luxembourg</option> </optgroup> <optgroup label="M"> <option value="MO">Macao</option> <option value="MG">Madagascar</option> <option value="MY">Malaisie</option> <option value="MW">Malawi</option> <option value="MV">Maldives</option> <option value="ML">Mali</option> <option value="MT">Malte</option> <option value="MA">Maroc</option> <option value="MQ">Martinique</option> <option value="MU">Maurice</option> <option value="MR">Mauritanie</option> <option value="YT">Mayotte</option> <option value="MX">Mexique</option> <option value="MC">Monaco</option> <option value="MN">Mongolie</option> <option value="MS">Montserrat</option> <option value="MZ">Mozambique</option> <option value="MM">Myanmar</option> </optgroup> <optgroup label="N"> <option value="NA">Namibie</option> <option value="NR">Nauru</option> <option value="NP">Népal</option> <option value="NI">Nicaragua</option> <option value="NE">Niger</option> <option value="NG">Nigéria</option> <option value="NU">Niué</option> <option value="NO">Norvège</option> <option value="NC">Nouvelle-Calédonie</option> <option value="NZ">Nouvelle-Zélande</option> </optgroup> <optgroup label="O"> <option value="OM">Oman</option> <option value="UG">Ouganda</option> <option value="UZ">Ouzbékistan</option> </optgroup> <optgroup label="P"> <option value="PK">Pakistan</option> <option value="PW">Palaos</option> <option value="PA">Panama</option> <option value="PG">Papouasie-Nouvelle-Guinée</option> <option value="PY">Paraguay</option> <option value="NL">Pays-Bas</option> <option value="PE">Pérou</option> <option value="PH">Philippines</option> <option value="PL">Pologne</option> <option value="PF">Polynésie française</option> <option value="PR">Porto Rico</option> <option value="PT">Portugal</option> <option value="TW">Province chinoise de Taiwan</option> </optgroup> <optgroup label="Q"> <option value="QA">Qatar</option> </optgroup> <optgroup label="R"> <option value="SY">République arabe syrienne</option> <option value="CF">République centrafricaine</option> <option value="KR">République de Corée</option> <option value="MD">République de Moldavie</option> <option value="CD">République démocratique du Congo</option> <option value="DO">République dominicaine</option> <option value="IR">République islamique d'Iran</option> <option value="KP">République populaire démocratique de Corée</option> <option value="LA">République Populaire du Laos</option> <option value="CZ">République tchèque</option> <option value="TZ">République-Unie de Tanzanie</option> <option value="RE">Réunion</option> <option value="RO">Roumanie</option> <option value="GB">Royaume-Uni</option> <option value="RU">Russie</option> <option value="RW">Rwanda</option> </optgroup> <optgroup label="S"> <option value="EH">Sahara occidental</option> <option value="KN">Saint-Christophe-et-Niévès</option> <option value="SM">Saint-Marin</option> <option value="PM">Saint-Pierre-et-Miquelon</option> <option value="VA">Saint-Siège (Cité du Vatican)</option> <option value="VC">Saint-Vincent-et-les Grenadines</option> <option value="SH">Sainte-Hélène</option> <option value="LC">Sainte-Lucie</option> <option value="WS">Samoa</option> <option value="AS">Samoa américaines</option> <option value="ST">Sao Tomé-et-Principe</option> <option value="SN">Sénégal</option> <option value="CS">Serbie-et-Monténégro</option> <option value="SC">Seychelles</option> <option value="SL">Sierra Leone</option> <option value="SG">Singapour</option> <option value="SK">Slovaquie</option> <option value="SI">Slovénie</option> <option value="SO">Somalie</option> <option value="SD">Soudan</option> <option value="LK">Sri Lanka</option> <option value="SE">Suède</option> <option value="CH">Suisse</option> <option value="SR">Suriname</option> <option value="SJ">Svalbard et Jan Mayen</option> <option value="SZ">Swaziland</option> </optgroup> <optgroup label="T"> <option value="TJ">Tadjikistan</option> <option value="TD">Tchad</option> <option value="IO">Territoire britannique de l'océan Indien</option> <option value="TF">Territoire Francais du Sud</option> <option value="PS">Territoires palestiniens occupés</option> <option value="TH">Thaïlande</option> <option value="TL">Timor oriental</option> <option value="TG">Togo</option> <option value="TK">Tokelau</option> <option value="TO">Tonga</option> <option value="TT">Trinité-et-Tobago</option> <option value="TN">Tunisie</option> <option value="TM">Turkménistan</option> <option value="TR">Turquie</option> <option value="TV">Tuvalu</option> </optgroup> <optgroup label="U"> <option value="UA">Ukraine</option> <option value="UY">Uruguay</option> </optgroup> <optgroup label="V"> <option value="VU">Vanuatu</option> <option value="VE">Vénézuéla</option> <option value="VN">Vietnam</option> </select> </div><br></br> <div class="form-group"> <label for="adPSW">Entrez votre mot de passe: *</label> <input type="password" class="form-control" id="adPSW" name="adPSW" placeholder="ex : 856NiTr@"> <label for="password">(Doit contenir : 1 majuscule, 1 minuscule, 1 chiffre et 8 caractères)</label> </div><br></br> <input class="btn btn-primary mt30 col-sm-5" type="submit" name="submit" value="S'inscrire" /> </form> </div> </div> </div> </div>
Le code Model AssociationManager (car oui c'est pour l'inscription des assoc) :
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 <?php require_once 'views/Views.php'; //PERMET DE CONTROLER CE QUE DEMANDE L'UTILISATEUR. //SI C'EST OK : ALORS IL ACCEPTE L'AFFICHAGE. //SI C'EST PAS OK : IL RETOURNE UNE ERREUR. class ControllerInscriptionAsso{ private $_view; private $_associationManager; public function __construct(){ if(isset($url) && count($url) > 1){ require 'views/view404.php'; } elseif (isset($_GET['create'])){ $this->create(); } elseif (isset($_GET['status']) && isset($_GET['status']) == "new"){ $this->store(); } else { $this->association(); } } private function association(){ $this->_associationManager = new AssociationManager(); //$associations = $this->_associationManager->getAssociations(); //$setAsso = $this->_associationManager->setAssociation(); $this->_view = new Views('InscriptionAsso'); $this->_view->afficherSansData(); } private function create(){ if(isset($_GET['create'])) { $this->_view = new Views('InscriptionAsso'); $this->_view->afficherSansData(); } } private function store(){ $this->_associationManager = new AssociationManager; $assoc = $this->_associationManager->createAssociation(); $this->_view = new Views('Accueil'); $this->_view->afficherSansData(); } } ?>
Et enfin, mon Model qui est là pour piocher dans la BDD :
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 <?php //CONTIENT LES METHODES DE RECCUPERATION DES ASSOCIATIONS. class AssociationManager extends Model { //FONCTION QUI RECCUPERE LES ASSOCIATIONS. public function getAssociations(){ return $this->getAll('association', 'Association'); } public function getComment($id){ return $this->getOne('commentaire', 'Commentaire', $id); } public function createAssociation(){ return $this->createOneAsso('association', 'Association'); } } ?>
Si vous savez pourquoi lorsque je cherche à envoyer mon form vers mon controler rien ne se passe, je suis preneur. Je n'ai pas de message d'erreur.
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 //PERMET DE SE CONNECTER A LA BDD, ET DE RECCUPERER DES DONNEES DANS LA BDD. abstract class Model { private static $_bdd; //INSTANCIER LA CONNEXION A LA BDD. private static function setBdd(){ self::$_bdd = new PDO('mysql:host=localhost;dbname=noworries0;charset=utf8', 'root', ''); //ON UTILISE LES CONSTANTES DE PDO POUR GERER LES ERREURS. self::$_bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); } //RECCUPERER LA CONNEXION A LA BDD. protected function getBdd(){ //SI ON EST PAS CONNECTE A LA BDD. if(self::$_bdd == null){ //ALORS ON S'Y CONNECTE EN APPELANT LA FONCTION setBdd(); self::setBdd(); return self::$_bdd; } } //RECCUPERER TOUTES LES COLONES D'UNE TABLE DANS LA BDD. protected function getAll($table, $obj){ $this->getBdd(); $var = []; $req = self::$_bdd->prepare('SELECT * FROM ' .$table); $req->execute(); //ON CREER LA VARIABLE $data QUI RECCUPERE LES DONNEES. while($data = $req->fetch(PDO::FETCH_ASSOC)) { $var[] = new $obj($data); } return $var; $req->closeCursor(); } protected function getMissionAssociation($obj){ $this->getBdd(); $var = []; $req = self::$_bdd->prepare( 'SELECT IDmission, missionTitre, missionSujet, missionDateDebut, missionDateFin, missionContenu, mission.IDasso, missionImage, userNom, userImage, user.IDuser FROM mission INNER JOIN user ON user.IDuser = mission.IDuser ORDER BY IDmission desc' ); $req->execute(); while($data =$req->fetch(PDO::FETCH_ASSOC)) { $var[] = new $obj($data); } return $var; $req->closeCursor(); } protected function getOneMission($obj, $id){ $this->getBdd(); $var = []; $req = self::$_bdd->prepare( 'SELECT IDmission, missionTitre, missionSujet, missionDateDebut, missionDateFin, missionContenu, mission.IDasso, missionImage, userNom, userImage, user.IDuser FROM mission INNER JOIN user ON user.IDuser = mission.IDuser WHERE mission.IDmission = ? ' ); $req->execute(array($id)); //ON CREER LA VARIABLE $data QUI RECCUPERE LES DONNEES. while($data = $req->fetch(PDO::FETCH_ASSOC)) { $var[] = new $obj($data); } return $var; $req->closeCursor(); } protected function getCom($obj, $id){ $this->getBdd(); $var = []; $req = self::$_bdd->prepare( 'SELECT IDcom, commentaire.IDuser, comContenu, comDate, userNom, userImage, user.IDuser FROM commentaire INNER JOIN user ON user.IDuser = commentaire.IDuser WHERE IDmission = ? ' ); $req->execute(array($id)); //ON CREER LA VARIABLE $data QUI RECCUPERE LES DONNEES. while($data = $req->fetch(PDO::FETCH_ASSOC)) { $var[] = new $obj($data); } return $var; $req->closeCursor(); } protected function createOneMission($table, $obj){ $this->getBdd(); $req = self::$_bdd->prepare(' INSERT INTO ' .$table. ' (missionTitre, missionSujet, missionDateDebut, missionDateFin missionContenu, missionImage) VALUES (?, ?, ?, ?, ?, ?) '); $req->execute(array($_POST['missionTitre'], $_POST['missionSujet'], $_POST['missionDateDebut'], $_POST['missionDateFin'], $_POST['missionContenu'], $_POST['missionImage'])); $req->closeCursor(); } protected function createOneAsso($table, $obj){ $this->getBdd(); $req = self::$_bdd->prepare(' INSERT INTO user(userNom, userImage) VALUES (?, ?) '); $req->execute(array($_POST['userNom'], $_POST['userImage'])); $req->closeCursor(); $IDuser = $_bdd->lastInsertId(); $req1 = self::$_bdd->prepare(' INSERT INTO adresse(adAdresse, adVille, adCP, adPays, adTelephone, adEmail, adPSW, IDuser) VALUES (?, ?, ?, ?, ?, ?, ?, $IDuser) '); $req1->execute(array($_POST['adAdresse'], $_POST['adVille'], $_POST['adCP'], $_POST['adPays'], $_POST['adTelephone'], $_POST['adEmail'], $_POST['adPSW'])); $req1->closeCursor(); $req2 = self::$_bdd->prepare(' INSERT INTO association(IDuser, assoType) VALUES ($IDuser, ?) '); $req2->execute(array($_POST['assoType'])); $req2->closeCursor(); } } ?>
Merci d'avance pour votre aide !
Partager