Site en php MVC

Résolu
Pushed Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
Pushed Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   1
 
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
));
}
1