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 :

[Système] [DEBUTANT] Pb de classe


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut [Système] [DEBUTANT] Pb de classe
    Bonjour,

    Afin d'optimiser mes requêtes MySql, je tente de m'initier aux classes et bien sûr, ça foire ... et pourtant, en théorie ça devrait bien fonctionner (?).

    J'utilise 2 fichiers :

    # dbclass.inc.php contient la définition de ma classe :

    class album
    {
    var $id_album;
    var $titre;

    function lire_album($id_album)
    {
    $query = "SELECT id_album,titre FROM ms_album WHERE id_album='$id_album'";
    $requete = mysql_db_query($db, $query);
    $this->id_album = mysql_result($requete,0,"id_album");
    $this->titre = mysql_result($requete,0,"titre");
    }
    }


    # mon fichier php qui doit afficher les infos :

    <?php
    include("config_db.inc.php");
    include ("dbclass.inc.php");
    $monAlbum = new album();
    $monAlbum->lire_album(5);
    echo "Titre: ".$monAlbum->titre."<br>";
    ?>


    J'obtiens le message d'erreur suivant alors que ma requête en elle-même est correcte :
    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in .../www/dbclass.inc.php on line 11

    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in .../www/dbclass.inc.php on line 12


    Quelqu'un aurait une idée ?
    Merci d'avance!

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Par défaut
    Bonjour,

    si tu fais un echo de ta requête et que tu la testes, tu obtiens quel message ?

  3. #3
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 12
    Par défaut
    Ta requête doit être mauvais car le résultat retourné par le mysql_db_query() n'est pas exploitable.
    Fais un echo $query; pour voir la tête de ta requête, et essaye de l'executer dans PHPMyAdmin pour voir ce que ça donne!

    -----
    Edit: j'ai répondu trop lentement

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut
    Elle fonctionne très bien : les valeur de l'id_album et du titre s'affichent.

    En utilisant la classe album(); , j'ai l'impression que la variable $id_album contenue dans ma requête est vide ...

    Comprends pas ...

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Par défaut
    Si tu as cette impression, pourquoi n'afficherais-tu pas le contenu de ta variable dans ta classe via un echo ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut
    Balrog > j'ai répondu en même temps que toi

    Navis 84 / Balrog > J'ai donc essayé ce que vous m'avez conseillé : elle s'exécute bien sous PhpMyAdmin et un echo $query donne ça :
    SELECT titre, pochette FROM ms_album WHERE id_album = '150'

    De plus, j'utilise régulièrement des requêtes sous cette forme et j'ai pas de soucis.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut
    j'ai fais un echo $query; dans ma fonction :

    function lire_album($id_album)
    {
    $query = "SELECT id_album,titre FROM ms_album WHERE id_album='$id_album'";
    echo $query;
    $requete = mysql_db_query($db, $query);
    $this->id_album = mysql_result($requete,0,"id_album");
    $this->titre = mysql_result($requete,0,"titre");
    }

    ... et ça m'affiche :

    SELECT id_album,titre FROM ms_album WHERE id_album='5'


    Donc c'est pas ce que je croyais ...

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut
    salut
    tu n'etable pas de connexion à ta base

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut
    jeff > salut! Si, si, j'ai une inclusion de type include("config_db.inc.php");
    dans mon fichier php, donc y'a pas de soucis de ce côté-là.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut
    ba si justement ton probleme est la passe l'identifiant de ta connexion a ta methode
    essaye ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function lire_album($id_album, $mysqlID)
    {
    $query = "SELECT id_album,titre FROM ms_album WHERE id_album='$id_album'";
    echo $query;
    $requete = mysql_db_query($db, $query,$mysqlID);
    $this->id_album = mysql_result($requete,0,"id_album", $mysqlID);

  11. #11
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Par défaut
    Si ton champ est de type numérique, je te conseille d'enlever les guillemets dans ta requête.

  12. #12
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 12
    Par défaut
    $db est bien ne variable globale?

    Autrement met global $db; au début de function lire_album

  13. #13
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    Regle n°1 de la signature

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut
    jeff > Voilà le résultat du code utilisant $mysqlID:

    Warning: Missing argument 2 for lire_album() in .../www/dbclass.inc.php on line 6
    SELECT id_album,titre FROM ms_album WHERE id_album='5'
    Warning: mysql_db_query(): supplied argument is not a valid MySQL-Link resource in .../www/dbclass.inc.php on line 10

    Warning: Wrong parameter count for mysql_result() in .../www/dbclass.inc.php on line 11

    Warning: Wrong parameter count for mysql_result() in .../www/dbclass.inc.php on line 12
    Titre: ""

    ------------------------------------------------------------

    En déclarant global $db; en début de fonction, j'obtiens ceci :

    SELECT id_album,titre FROM ms_album WHERE id_album='5'
    Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 5 in .../www/dbclass.inc.php on line 12

    Warning: mysql_result(): Unable to jump to row 0 on MySQL result index 5 in .../www/dbclass.inc.php on line 13
    Titre: ""

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut
    naivs84 > mon champ "id_album" est de type integer

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut
    Du nouveau les gars...

    En changeant la valeur de l'id_album dans cette ligne :
    $monAlbum->lire_album(28);

    ... je n'ai plus de message d'erreur...

    ... de plus en plus paumé moi!

  17. #17
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Par défaut
    $query = "SELECT id_album,titre FROM ms_album WHERE id_album='$id_album'";
    apparemment ta requete cloche a quelq part. quand tu execute une requete n'oublie pas ceci:
    $requete = mysql_db_query($db, $query) or die ("erreur sql $query".mysql_error()).
    entre autre enlève les quotes autour de $id_album vu que id_album est un champ de type numérique
    desolé q ça soit arrivé si tard

  18. #18
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 12
    Par défaut
    Déjà le global $db était nécessaire (je suis pas trop pour ce système, mais bon)
    Il semblerait que ta requête ne retourne aucune ligne car il n'arrive pas à accéder la première ligne. Pourtant tu affirmes le contraire donc je sais pas trop

    Tu peux tenter un print_r(mysql_fetch_array($requete)); pour voir le contenu de $requete à moins que le print_r($requete) fonctionne directement...

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 11
    Par défaut
    ouatmad > j'ai remplacé le code en conséquence ... toujours rien ...

    balrog > voici le résultat d'un print_r(mysql_fetch_array($requete)); :

    Array ( [0] => 1 [id_album] => 1 [1] => Bitterness the star [titre] => Bitterness the star )

    On avance

  20. #20
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 12
    Par défaut
    Bon bah ne te prends pas la tête et utilise un mysql_fetch_array() (j'utilisais tout le temps cette fonction).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    class album
    {
    var $id_album;
    var $titre;
     
    function lire_album($id_album)
    {
    $query = "SELECT id_album,titre FROM ms_album WHERE id_album='$id_album'";
    $requete = mysql_db_query($db, $query);
    $ligne=mysql_fetch_array($requete);
    $this->id_album = $ligne['id_album'];
    $this->titre = = $ligne['titre'];
    }
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Debutant] Sources des Classes
    Par youbyoub dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 01h39
  2. [POO] Débutant en POO, class mysql php5
    Par ouafouaf dans le forum Langage
    Réponses: 9
    Dernier message: 06/02/2006, 10h21
  3. [Super debutant] probleme de "classes"
    Par frett dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/03/2005, 13h43
  4. [debutant][Classpath][Linux] Classe non trouvée
    Par oghma777 dans le forum Général Java
    Réponses: 5
    Dernier message: 15/10/2004, 22h26
  5. [Eclipse3.0][Debutant]Pas de .class généré
    Par willowII dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 10/08/2004, 18h07

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