Bonjour,
En POO, j'ai crée une méthode permettant de lister des catégories présentes dans une Base de données.
Voici la méthode :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 class Model { // fonction permettant de lister les categories public function find($data) { // $data est un tableau qui contiendra les clauses de la requete SQL $conn = opendb_conn(); // on se connecte à la Base de données // l'objectif est de concevoir des valeurs modifiables dans les clauses de la requete SQL $conditions = "1=1"; $fields = "*"; $limit = ""; $order = "id DESC"; // on verifie que les donnees soient bien initialisees if (isset($data['conditions'])){$conditions = $data["conditions"];} if(isset($data["fields"])){$fields = $data["fields"];} if(isset($data["limit"])){$limit = "LIMIT ".$data["limit"];} if(isset($data["order"])){$order = $data["order"];} // on constitue la requete $sql = "SELECT $fields FROM ".$this->table."WHERE $conditions ORDER BY $order $limit"; $stm = $conn->prepare($sql); $stm->execute(); $d = array(); // on cree un tableau vide pour stocker les resultats de la requete while ($data = $stm->fetch(PDO::FETCH_ASSOC)) { // tant que l'on recupere des donnees .... $d[] = $data; // on stocke les donnees dans le tableau } return $d; // on retourne le contenu du tableau $conn = null; } // fin function find($data) }
dans le fichier index.php, j'ai le code suivant
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 <?php require_once("core/core.php"); $Category = Model::load("category"); // on charge notre modele ?> <?php if (!empty($_POST)) { $Category->save($_POST); $_GET['id'] = $Category->id; } ?> <!DOCTYPE html> <html> <head> <link rel="stylesheet" href="css/eltStyle.css" type="text/css" /> </head> <body> <div id="bloc_page"> <h4>Un tutoriel d'initiation sur la programmation objet ...</h4> <?php // on appelle notre methode find() du modele // find() prend comme parametre un tableau qui correspond aux conditions pour la recuperation des categories $cat = $Category->find(array( "order" => "position ASC" )); print_r($cat); ?> </div> </body> </html>
La classe Category qui hérite de la classe Model
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php // Classe permettant d'interragir avec la Base de donnees class Category extends Model { // (extends veut dire herite de) var $table = "categories"; // la table de la Base de donnees sur laquelle on veut interragir } // fin class Category{} ?>
J'ai le message d'erreur suivant mais ce dernier n'est pas vraiment "parlant" :
Merci d'avance.Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: 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 '1=1 ORDER BY position ASC' at line 1' in C:\Users\sogia\Desktop\www\cineBook\models\model.php on line 83
Transact.
Partager