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 :

[POO] Problème avec une classe + requêtes sql


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 66
    Points
    66
    Par défaut [POO] Problème avec une classe + requêtes sql
    Bonjour, je suis en train de coder un site avec php5 en objet. J'ai pour cela déclaré une classe qui se charge de toutes les requetes sql, mais j'avoue qu'un problème me trouble. Voici le code de ma classe:

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    <?php
     
    class sql
    {
            public $query = '';
     
            public function __construct ($host, $user, $passwd, $db)
            {
                    mysql_connect ($host, $user, $passwd) or die ('erreur!');
                    mysql_select_db ($db) or die ('erreur!');
                    return 0;
            }
     
            public function query ($type, $table, $champs, $where='', $order='', $limit=array(), $desc=FALSE, $values=array(), $update=array(), $update_keys=array())
            {
                    if ($table == '') exit;
                    switch ($type)
                    {
                            case 'select':
                                    $this->query = 'SELECT '.$champs.' FROM '.$table;
                                    if ($where != '') 
                                    $this->query .= ' WHERE '.$where;
                                    if ($order != '') 
                                    $this->query .= ' ORDER BY '.$order;
                                    if ($desc == TRUE) 
                                    $this->query .= ' DESC ';
                                    if ($limit != '')
                                    $this->query .= 'LIMIT ('.$limit[0].', '.$limit[1].')';
                                    break;
     
                            case 'delete':
                                    if ($where == '') $where = 1;
                                    $this->query = 'DELETE FROM '.$table.' WHERE '.$where;
                                    break;
     
                            case 'insert':
                                    $this->query = 'INSERT INTO '.$table.' VALUES (""';
                                    foreach ($values as $value)
                                    {
                                            $this->query .= ', "'.$value.'"';
                                    }
                                    $this->query .= ')';
                                    break;
     
                            case 'update':
                                    foreach ($update as $item)
                                    {
                                            foreach ($update_keys as $key)
                                            {
                                                    $this->query = 'UPDATE '.$table.' SET '.$item.' = "'.$key.'"';
                                            }
                                    }
                                    break;
     
                            default:
                                    exit;
                    }
                    return mysql_query($this->query)
            }
     
            private function __destruct()
            {
                    mysql_close();
            }
    };

    Ensuite, dans mon fichier "index.php", j'exécute la requête suivante:

    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
    <?php
     
    include 'options.php';
     
    $pagetitle = 'accueil';
     
    $body = '
    <table width="100%" bgcolor="#f1f1f1" cellspacing="0" cellpadding="0" align="center">';
            while ($sql = mysql_fetch_assoc ($db->query ('select', 'news', 'contenu, date', '', 'id_news', $limit=array(0,5),TRUE))) /*c'est la ligne 9*/
            {
                    $body .= '<tr><td width="100%" align="justify" bgcolor="#f1f1f1">'.$sql['contenu'].'</td></tr>
                                            <tr><td width="100%" align="right" bgcolor="#f1f1f1">'.$sql['date'].'</td></tr>';
            }
            $body .= '</table>';
     
    $tpl->output ($pagetitle, $body);
     
    ?>
    (les classes sont instanciées dans le fichier "options.php")

    Et voici l'erreur retournée:
    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in D:\web\test\index.php on line 9
    J'ai fait un test pour affiché ma requête à partir du fichier "index.php" et elle est normalement constituée. Pas de problème non plus du côté des paramètres de connexion. Avez vous une idée?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 254
    Points : 304
    Points
    304
    Par défaut
    Est-ce que cela se passe uniquement pour le select ou également pour l'update et le delete?
    Attention, pour le select, il manque un espace avant LIMIT dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      $this->query .= 'LIMIT ('.$limit[0].', '.$limit[1].')';
    Quand un problème a une solution, rien ne sert de s'inquiéter. Quand il n'y a pas de solution, s'inquiéter n'arrange rien.

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 66
    Points
    66
    Par défaut
    Problème résolu, une erreur tellement bête que je m'en veux... les valeurs du limit ne sont pas entourées de parenthèses normalement, mais je croyais... désolé.

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

Discussions similaires

  1. [PHP 5.2] [POO] Problème avec une class
    Par Shandler dans le forum Langage
    Réponses: 7
    Dernier message: 23/01/2009, 16h03
  2. [POO] Problème avec une flèche
    Par damienIRIS dans le forum Langage
    Réponses: 12
    Dernier message: 05/03/2008, 14h28
  3. Problème avec une classe générique
    Par Core8 dans le forum C++
    Réponses: 3
    Dernier message: 19/03/2007, 03h18
  4. Problème avec une classe ActionScript
    Par Patryk403 dans le forum Flash
    Réponses: 3
    Dernier message: 06/08/2006, 12h42
  5. Problème avec une classe... "without object"
    Par z980x dans le forum C++
    Réponses: 8
    Dernier message: 27/04/2006, 16h00

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