Site en php MVC

Résolu/Fermé
Pushed Messages postés 6 Date d'inscription dimanche 17 avril 2016 Statut Membre Dernière intervention 20 octobre 2016 - 22 mai 2016 à 18:47
Pushed Messages postés 6 Date d'inscription dimanche 17 avril 2016 Statut Membre Dernière intervention 20 octobre 2016 - 23 mai 2016 à 21:58
Bonjour, je développe un site PHP en MVC.
Je souhaite ajouter/insérer des données (récupérées d'une vue) dans la base de données.
Pour cela, j'ai ma vue view_validationFF.php, qui récupère bien les données car lorsque je fais :
echo $_SESSION['login'];
echo $_GET["txt_quantiteFF"];
echo $_GET['txt_mois'];
echo $_GET['lst_idFF'];

il affiche la vue view_validationFF.php avec les données qui ont été récupérées d'une vue précédente view_declarer_FF.php.
Dans mon controleur, j'ai une fonction renseignerFF() qui permet de récupérer la fonction declare_FF() contenant la requete d'insertion des données dans le modèle comme ceci :

Controleur :
function renseignerFF(){
    $insertionFF = declare_FF();
    require('view_validationFF.php');
}

Modèle :
function declare_FF(){
    $idVisiteur = $_SESSION['login'];
    $mois = $_GET['txt_mois'];
    $quantiteFF = $_GET['txt_quantiteFF'];
    $libelle = $_GET['lst_idFF'];
    $bdd = getBdd();
    $req = $bdd->prepare("INSERT INTO lignefraisforfait (idVisiteur, mois, quantiteFF, libelleType) VALUES ('.$idVisiteur.','.$mois.',$quantiteFF,'.$libelle.');");
    $req->execute();
    $resultat=$req->fetchAll();
    return $resultat;
}


Je cherche donc comment insérer les données dans la base à l'aide de la fonction renseignerFF() du contrôleur.

Merci de m'aider.

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 545
23 mai 2016 à 16:13
Salut,

Quelques remarques/corrections :
- As tu des messages d'erreurs ?
- Si ce n'est pas fait, active le rapport et l'affichage de erreurs PHP : http://www.infowebmaster.fr/tutoriel/afficher-erreur-php
- Si ce n'est pas fait, active l'affichage des erreurs PDO : https://www.php.net/manual/fr/pdo.error-handling.php
- Les variables $_GET sont elles bien transmises dans la fonction declare_FF ?
- Enfin, ta requête sql n'est pas correcte : tu utilises des "." alors que tu ne fait pas de concaténation (utilisation des doubles guillemets).
Puisque tu utilises PDO et les requêtes préparées, utilises les correctements avec des paramètres nommées. Tu peux voir des exemples sur la doc : https://www.php.net/manual/fr/pdo.prepare.php

Bonne journée,
1
Pushed Messages postés 6 Date d'inscription dimanche 17 avril 2016 Statut Membre Dernière intervention 20 octobre 2016
23 mai 2016 à 16:26
Bonjour Pitet,

Merci de ta réponse, je vais suivre tes conseils, je te tiens au courant.

:-)
0
Pushed Messages postés 6 Date d'inscription dimanche 17 avril 2016 Statut Membre Dernière intervention 20 octobre 2016
23 mai 2016 à 18:08
Je n'ai pas de messages d'erreurs.
J'ai activé le rapport d'affichage d'erreurs PHP, pas d'erreurs.
Je ne vois pas comment ajouter le débogage PDO à mon code, j'ai modifié ma requête SQL qui n'était pas correcte en effet.

function declare_FF(){
$idVisiteur = $_SESSION['login'];
$mois = $_GET['txt_mois'];
$quantiteFF = $_GET['txt_quantiteFF'];
$libelle = $_GET['lst_idFF'];
$bdd = getBdd();
$req = $bdd->prepare("INSERT INTO lignefraisforfait (idVisiteur, mois, quantiteFF, libelleType) VALUES (".$idVisiteur.",".$mois.",".$quantiteFF.",".$libelle.");");
$req->execute();
$resultat=$req->fetchAll();
return $resultat;
}
0
Pushed Messages postés 6 Date d'inscription dimanche 17 avril 2016 Statut Membre Dernière intervention 20 octobre 2016
23 mai 2016 à 21:58
J'ai résolu le soucis, j'ai recorrigé ma requête :

function declare_FF(){
$idVisiteur = $_SESSION['login'];
$mois = $_GET['txt_mois'];
$quantiteFF = $_GET['txt_quantiteFF'];
$libelle = $_GET['lst_idFF'];
$bdd = getBdd();
$req = $bdd->prepare('INSERT INTO lignefraisforfait (idVisiteur, mois, quantiteFF, libelleType) VALUES (:idVisiteur, :mois, :quantiteFF, :libelleType)');
$req->execute(array(
'idVisiteur' => $idVisiteur,
'mois' => $mois,
'quantiteFF' => $quantiteFF,
'libelleType' => $libelle
));
}
0