Bonjour, bonsoir!
Dans la continuité de mon projet de stage, je rencontre un second problème lors d'une insertion: dans un premier temps aucune insertion n'était prise en compte, j'ai donc changer la requête de ma fonction create() par une requête préparée! Malheuresement j'ai toujours un problème avec cette insertion, le dernier champ (dateProchaineRevision) est "null" alors que je le renseigne dans le formulaire.
Déjà, le formulaire:
Ensuite, le formulaire (graphique):
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 <form method="POST" action="Scripts/vehicule_create.php"> Nom: <input type="text" name="nomVehicule"> <br> Immatriculation: <input type="text" name="immatriculation"> <br> Catégorie: <select name="categorieVehicule" style="width: 230px"> <option value="0"> - - - - - - - - </option> <?php $req = "SELECT * FROM categorieVehicule ORDER BY nomCategorieVehicule"; try{ $stmt = $pdo->prepare($req); $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo "<option value='".$row["numCategorieVehicule"]."'>".$row["nomCategorieVehicule"]."</option>"; } } catch(Exception $e){ print "Erreur ! ".$e->getMessage(). "<br>"; } ?> </select> <br> Nom abrégé: <input type="text" name="nomVehiculeABRG"> <br> Date de la précédente révision: <input type="text" name="dateDerniereRevision"> <br> Date de la prochaine révision: <input type="text" name="dateProchaineRevision"> <br> <input type="submit" name="Valider"> </form>
On constate que la date de la prochaine révision est bien renseignée.
Script vehicule_create.php:
Méthode create() de la classe vehicule:
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 <?php include "../include/connexion.php"; if (isset($_POST['nomVehicule']) && isset($_POST['immatriculation']) && isset($_POST['categorieVehicule']) ) { $vide = null; include "../Classe/vehicule.php"; $unVehicule = new vehicule ($_POST['immatriculation'], $_POST['nomVehicule'], $_POST['categorieVehicule']); $nomABRG = ($_POST['nomVehiculeABRG'] == "") ? $vide : $_POST['nomVehiculeABRG']; $unVehicule->setNomVehiculeABRG($nomABRG); $dateDerniere = ($_POST['dateDerniereRevision'] == "") ? $vide : $_POST['dateDerniereRevision']; $unVehicule->setDateDerniereRevision($dateDerniere); $dateProchaine = ($_POST['dateProchaineRevision'] == "") ? $vide : $_POST['dateProchaineRevision']; $unVehicule->setDateProchaineRevision($dateProchaine); $unVehicule->create(); header("Location: ../page_vehicule.php"); } ?>
Voici ce que j'obtient:
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 public function create(){ include "../include/connexion.php"; try{ $req = "INSERT INTO vehicule (numVehicule, immatriculation, numCategorieVehicule, nomVehicule, nomVehiculeABRG, dateDerniereRevision, dateProchaineRevision) VALUES (NULL,?,?,?,?,?,?)"; $stmt = $pdo->prepare($req); $params = [$this->_immatriculation, $this->_numCategorieVehicule, $this->_nomVehicule, $this->_nomVehiculeABRG, $this->_dateDerniereRevision, $this->_dateProchaineRevision]; echo($req); var_dump($params); $stmt->excute($params); //L'erreur ici est volontaire !! Elle me permet de voir mon "echo" et "var_dump($params)". } catch(Exception $e){ print "Erreur ! ".$e->getMessage(). "<br/>"; } }
Sans mon erreur volontaire, l'insertion s'effectue bien mais laisse la propriété "dateProchaineRevision" vide...
J'ai relus tous ces codes à plusieurs reprises, par conséquent si quelqu'un me pointe que le problème vient d'une erreur de syntaxe, j'abandonne la progra
Plus sérieusement, si une personne serait apte à éclairer ma lanterne sur la possible solution à mon problème, je suis preneur!
Merci d'avance.
Cordialement,
Skunka.
Partager