J'ai tenté de créer un objet mysqli pour sortir un peu du mode procédural que je connais déjà, il est placé dans un fichier que j'inclue dans un autre, qui est en fait une classe. Dans celle-ci, j'ai des méthodes qui utilisent l'objet mysqli. Mon souci donc, est que l'include ne fonctionne pas.
J'obtiens ça à chaque fois que je balance des données à partir d'un formulaire : Fatal error: Call to a member function query() on a non-object in C:\wamp\www\essais\includes\classArticle.class.php on line 35
jvais afficher mon code ce sera surement plus simple.
classArticle.php
<?php
include_once 'config.inc.php';
class article {
public $title;
public $text;
public $categorie;
public $currentDate;
public $messageUser;
public $sql;
public $stmt;
function __construct(){
$this->title = "";
$this->text = "";
$this->categorie = "";
$this->sql = "";
$this->stmt = "";
$this->messageUser = "<ul id='msgtransmis'><li>Appel du constructeur</li>";//a modifier à la mise en ligne
$this->currentDate = date("F j, Y, g:i a");
}
function set(){
//recupere les valeurs des champs de formulaire
$this->title = $_POST['titre'];
$this->text = $_POST['texte'];
$this->categorie = $_POST['categorie'];
}
function creationArticle(){
//creation d'un article, insertion dans la BDD
$this->sql = "INSERT INTO `".$nomTable."` (`id`,`titre`,`texte`,`categorie`,`datepublication`) VALUES (``, `".$this->title."` ,`".$this->text."`,`".$this->categorie."`,`".$this->currentDate."`)";
echo $this->sql;
$this->stmt = $nouvelleConnexion->query($sql);
if($this->stmt === true){
$this->messageUser .= "<li>Les données ont été insérées.</li>";
echo $this->messageUser."</ul>";
}
else if($this->stmt === false){
$this->messageUser .= "<li>Les données n'ont pas été insérées.</li>";
echo $this->messageUser."</ul>";
exit();
}
}
function modifArticle(){
//recuperation des donnees dans le formulaire, puis UPDATE de l'enregistrement dans la BDD
$this->sql = "UPDATE articles SET titre='".$titre."', texte='".$texte."', datedermodif='".$this->currentDate."' WHERE id_article='".$id_article."'";
echo $this->sql;
$this->stmt = $nouvelleConnexion->query($sql);
if($this->stmt === true){
$this->messageUser .= "<li>Mis à jour.</li>";
echo $this->messageUser."</ul>";
}
else if($this->stmt === false){
$this->messageUser .= "<li>Les données n'ont pas été insérées.</li>";
echo $this->messageUser."</ul>";
exit();
}
}
function suppressionArticle(){
//supprimer l'article, après confirmation du voeu
}
function previewArticle(){
//fonction de prévisualisation, qui s'affiche si l'on appuie sur prévisualiser
echo "<div id='preview'>";
echo "<h2>".$this->title."</h2>";
echo "<h3>".$this->categorie."</h3>";
echo "<h4>".$this->currentDate."</h4>";
echo "<p>".$this->text."</p>";
echo "</div>";
}
function nettoyage(){
//traitement de la saisie utilisateur
$this->title = trim($this->title);
$this->text = trim($this->text);
}
}
?>
config.inc.php
<?php
//fichier de configuration local config.inc.php
$username = "root";
$password = "";
$hostname = "localhost";
$nomBase = "essai";
$nomTable = "articles";
//création de l'objet mysqli
$nouvelleConnexion = new mysqli($hostname,$username,$password,$nomBase);
?>
Merci d'avance pour votre aide