Bonjour, je suis en train d'apprendre la poo, mais je suis bloqué à un moment. Je n'arrive pas à insérer une valeur dans la bdd.
Je vais vous mettre mon code pour que vous compreniez.

pages.php

<?php
require'../func/bd.php';
require'../func/func.php';
$Functions = new Functions();
echo $Functions->hello();
if(!empty($_POST'submit']) && strlen($_POST'contenu'])>=5){
  $titre = $_POST'titre'];
  $contenu = $_POST'contenu'];
  $Functions->insert($titre,$contenu);
}
?>
<form method="POST" action="">
  <input type="text" name="titre">
  <textarea name="contenu"></textarea>
  <input type="submit" name="submit" value="Envoyer">
</form>

func.php

<?php
class Functions{
  function hello(){
    echo"Bonjour";
  }

  function insert($titre,$contenu){
    $db->query("INSERT INTO recherche(titre,contenu) VALUES($titre,$contenu)");
  }
}
?>

db.php

<?php
$db = new PDO('mysql:host=localhost;dbname=minisite','root','', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
?>

A chaque fois que je veux envoyer le formulaire, il me dit qu'il ne trouve pas $db, mais je ne sais pas comment faire pour qu'il le trouve.
Merci à toutes les personnes qui pourront m'aider.
Merci d'avoir pris le temps de lire mon message.

PS: je sais que ce n'est pas du tout sécurisé, mais c'est juste un test et je ne souhaite pas sécurisé, je souhaite juste apprendre la poo.

10 réponses


Carouge10
Réponse acceptée

Ceci devrait corriger le problème:

function insert($db,$titre,$contenu){
    $db->query('INSERT INTO recherche(titre,contenu) VALUES("'.$titre.'","'.$contenu.'")');
  }
Alexandre #lbac
Réponse acceptée

Bonsoir :

$Functions = new Functions($db);

<?php
class Functions{
private $db;
public function __construct($db)
{
    $this->db = $db;
}
public function insert($titre, $contenu)
{
    $this->db->query('INSERT INTO recherche(titre,contenu) VALUES("'.$titre.'","'.$contenu.'")');
}

Ca devrait résoudre le problème ;)

Bonjour Brandon, merci pour votre réponse, met il me renvoie toujours cette erreur "Undefined variable: db in C:\Program Files (x86)\wamp\www\test\func\func.php on line 9".

Bonjour,

$db n'existe que dans votre fonction. Pour qu'il prenne en compte que cela viens d'ailleurs, il faut lui passer en paramètre comme $titre et $contenu.

$Functions->insert($db,$titre,$contenu);

function insert($db,$titre,$contenu){
    $db->query('INSERT INTO recherche(titre,contenu) VALUES('.$titre.','.$contenu.')');
  }

Bonjour Carouge, merci pour votre réponse, mais il m'affiche toujours une erreur qui est la suivante : "Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'article,hvjgjhkjhk)' at line 1 in C:\Program Files (x86)\wamp\www\test\func\func.php on line 9".
Le $db est la variable qui appartient à la connexion à la base de données dans le fichier db.php

Merci beaucoup Carouge, ça marche.
Encore merci.

Bonjour Brandon, merci pour votre réponse, mais votre code ne marche pas car ça m'affiche cette erreur "Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'article,ghgfhgj)' at line 1 in C:\Program Files (x86)\wamp\www\test\func\func.php on line 10".

C'est pas très propre ça... crée une class Mysql avec un constructeur et tes propres fonctions tel que query,prepare...

Bonsoir,

C'est déjà résolu, sinon il n'aura ni de post en vert, ni d'icone valider dans la liste des sujets.

;-)

Bonjour SquallX, merci beaucoup pour votre réponse.