IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Message d'erreur lors de l'invocation d'une méthode


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Points : 1 128
    Points
    1 128
    Par défaut Message d'erreur lors de l'invocation d'une méthode
    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.

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    Tu devrais afficher ta requête sql construite avec ton code . Je pense qu'il manque un espace avant le WHERE

  3. #3
    Membre éprouvé
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Points : 1 128
    Points
    1 128
    Par défaut
    Génial TERRA126
    Le problème est résolu.
    Merci encore.

    Transact.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/01/2008, 14h20
  2. Réponses: 6
    Dernier message: 13/12/2007, 04h13
  3. [VBA-E]Message d'erreur lors de l'affectation d'une macro + prob form
    Par V3lkin dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 22/11/2006, 15h07
  4. message d'erreur lors de mise à jour d'une BD access
    Par Abydos Business Group dans le forum Access
    Réponses: 2
    Dernier message: 25/01/2006, 17h36
  5. message d'erreur lors de la création d'une base
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/04/2004, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo