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" :

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
Merci d'avance.
Transact.