Bonjour,
Voila je rencontre un petit problème avec mon code.
je cherche a inserer des données dans la bd
<?php
session_start();
try {
$db = new PDO('mysql:host=localhost;dbname=blog','root','');
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER); # les noms des champs seront en caractères miniscules
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); # les erreurs lanceront des exceptions
echo "connecté";
} catch (Exception $e) {
echo "Erreur: ".$e->getMessage();
#die();
}
?>
<h1>bienvenue <?php echo $_SESSION['username']; ?></h1> <br>
<?php
if (isset($_SESSION['username'])) {
# code...
if (isset($_GET['action'])) {
# code...
if ($_GET['action']=='add') {
# code...
if (isset($_POST['submit'])) {
# code...
$titre=$_POST['titre'];
$description=$_POST['description'];
$prix=$_POST['prix'];
if ($titre&&$description&&$prix) {
# code...
$insert = $db -> prepare ("INSERT INTO article VALUES ('','$titre','$description','$prix')");
$insert->exec();
}else{
echo "veuillez remplir tous les champs";
}
}
?>
<form action="" method="POST">
<h3>Titre: </h3><input type="text" name="titre"><br>
<h3>Description: </h3><input type="text" name="description"><br>
<h3>Prix: </h3><input type="number" name="prix"><br><br>
<input type="submit" name="submit">
</form>
<?php
}elseif ($_GET['action']=='modifier') {
# code...
}elseif ($_GET['action']=='supprimer') {
# code...
}else{
die('une erreur s\'est produite');
}
}
}else{
header('location: index.php');
}
?>
<link rel="stylesheet" type="text/css" href="../style/bootstrap.css"/>
<a href="?action=add">Ajouter un article</a>
<a href="?action=modifier">Modifier un article</a>
<a href="?action=supprimer">Supprimer un article</a>
Décrivez ici ce que vous cherchez à obtenir
ET voilà ce que j obtiens
Notice: Undefined variable: db in C:\wamp64\www\site_final\admin\admin.php on line 40
( ! ) Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\wamp64\www\site_final\admin\admin.php on line 40
( ! ) Error: Call to a member function prepare() on null in C:\wamp64\www\site_final\admin\admin.php on line 40
aidez moi svp
Bonsoir,
je pense que ton problème vient des simples quotes autour de tes variables
essaie:
$insert = $db -> prepare ("INSERT INTO article VALUES ( '',$titre,$description, $prix)");
$insert->exec();
// Ceci devrait marcher aussi sous mysql... ( où l'accent grave est le séprateur de colonne en lieu et place des simples quotes de ta requête initiale)
$insert = $db -> prepare ("INSERT INTO article VALUES ( `''`,`$titre`,`$description`,` $prix`)");
$insert->exec();
Tu peux essayer en précisant les champs dans ta requête insert correspondant aux valeurs que tu souhaites ajouter : INSERT INTO Matable ( le_nom_du champs1, le nom du champs2 etc...) VALUES (ma_valeur1, ma_valeur2 etc... ) . Dans ton exemple, je ferais quelquechose comme :
$insert = $db->prepare('INSERT INTO article (titre, description, prix)
VALUES (?, ?, ?)');
$insert->execute([
$_POST['titre'], $_POST['description'],$_POST['prix']
]);
Heu... "Undefined variable: db"
On peut guère faire plus claire... et donc comme "prepare()" est une méthode d'un objet, mais que la variable $db n'est pas un objet puisqu'elle n'existe pas... ben forcément çà fonctionne pas.
Je pense que tu devrais également prendre connaissance de la documentation de la class PDO pour bien l'utiliser : https://www.php.net/manual/fr/book.pdo.php
Bonne continuation