Ajouter des données dans une base de données avec un formulaire
Résolu
hharchi9
Messages postés
693
Statut
Membre
-
hharchi9 Messages postés 693 Statut Membre -
hharchi9 Messages postés 693 Statut Membre -
Bonjour,
Je tente d'ajouter des données à ma base de données mais mon code, même s'il ne m'affiche aucune erreur n'ajoute rien sur la base...
Voici le code de traitement de la page :
Voilà, j'espère avoir été suffisamment clair.
Merci à tous de m'avoir lu et merci d'avance de vos réponses,
hharchi9.
Je tente d'ajouter des données à ma base de données mais mon code, même s'il ne m'affiche aucune erreur n'ajoute rien sur la base...
Voici le code de traitement de la page :
<?php
//récupération des données du formulaire
$titre= $_POST['titre'];
$sortie= $_POST['sortie'];
$realisateur= $_POST['realisateur'];
$acteurs= $_POST['acteurs'];
$duree= $_POST['duree'];
$nationalite= $_POST['nationalite'];
$video= $_POST['video'];
$synopsis= $_POST['synopsis'];
$critique= $_POST['critique'];
$pouces= $_POST['pouces'];
$note= $_POST['note'];
$genre= $_POST['genre'];
$lien= $_POST['lien'];
$affiche= $_POST['affiche'];
echo "Connection à la base de données... Patientez ..."; ?><br/><br/><?php
//code pour ajouter le film à la base de données
try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=le cinephile', 'root', '');
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}
// Si tout va bien, on peut continuer :
$bdd->exec("INSERT INTO films VALUES('$titre', '$sortie', '$realisateur', '$acteurs', '$duree', '$nationalite', '$video', '$synopsis', '$critique', '$pouces', '$note', '$genre', '$lien', '$affiche'");
echo "Le film a été ajouté, redirection en cours"; ?>
Voilà, j'espère avoir été suffisamment clair.
Merci à tous de m'avoir lu et merci d'avance de vos réponses,
hharchi9.
1 réponse
-
Salut,
Tu dois avoir un problème sur ta requête. Telle qu'elle est construite, tu ne doit pas avoir entiers ou des décimaux or je ne pense pas que ce soit le cas.. Si tu as des entiers ou des décimaux tu dois supprimer les quotes dans la requete pour ces variables.
Pour vérifier ta requete passe bien tu peux ajouter ça après :
if($bdd === FALSE) { die('Erreur dans la requête'); } else { echo "Requête OK"; }
Par contre tu devrais sécuriser tes variables parce que la tu as de grosses failles de sécurité (injection sql)-
-
Bonjour merci de votre réponse.
J'ai tenter de suivre vos conseils concernant une requête préparée mais j'ai un souci avec la fonction exec() voici le code :
//récupération des données du formulaire
$titre= $_POST['titre'];
$sortie= $_POST['sortie'];
$realisateur= $_POST['realisateur'];
$acteurs= $_POST['acteurs'];
$duree= $_POST['duree'];
$nationalite= $_POST['nationalite'];
$video= $_POST['video'];
$synopsis= $_POST['synopsis'];
$critique= $_POST['critique'];
$pouces= $_POST['pouces'];
$note= $_POST['note'];
$genre= $_POST['genre'];
$lien= $_POST['lien'];
$affiche= $_POST['affiche'];
echo "Connection à la base de données... Patientez ..."; ?><br/><br/><?php
//code pour ajouter le film à la base de données
try
{
// On se connecte à MySQL
$bdd = new PDO('mysql:host=localhost;dbname=le cinephile', 'root', '');
}
catch(Exception $e)
{
// En cas d'erreur, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}
// Si tout va bien, on peut continuer :
$req = $bdd->prepare('INSERT INTO films (Titre, Sortie, Realisateur, Acteurs, Duree, Nationalite, video, affiche, Synopsis, Critique, Pouces, Note, Genre lien) VALUES(:titre, :sortie, :realisateur, :acteurs, :duree, :nationalite, :video, :affiche, :synopsis, :critique, :pouces, :note, :genre, :lien)');
$req->execute(array(
':Titre' => $titre,
':Sortie' => $sortie,
':Realisateur' => $realisateur,
':Acteurs' => $acteurs,
':Duree' => $duree,
':Nationalite' => $nationalite,
':video' => $video,
':affiche' => $affiche,
':Synopsis' => $synopsis,
':Crtitique' => $critique,
':Pouces' => $pouces,
':Note' => $note,
':Genre' => $genre,
':lien' => $lien ));
echo "Le film a été ajouté, redirection en cours"; -
-
J'ai ajouté la ligne et voici le code erreur :
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in C:\wamp\www\cinephile\php\admin.php on line 51
PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\cinephile\php\admin.php on line 51
voici ce que contient la ligne 51 : ':lien' => $lien )); -
-