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

PHP & Base de données Discussion :

Problème avec fetchrow() [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Par défaut Problème avec fetchrow()
    Bonjour,

    Je viens de récupérer la gestion d'un logiciel suivi d'appel d'une hotline dont je fais parti et on me demande de regarder un problème qui se pose dans la version Web du logiciel.
    Sur le fenêtre listant les dossiers, j'ai le message d'erreur suivant :
    Fatal error: Call to undefined function: fetchrow() in ...\principal.php on line 445

    La ligne 445 correspond à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ($row3 =& $result3->fetchRow(DB_FETCHMODE_ASSOC))
    {
    ...
    }
    J'ai fait plusieurs recherche sur le le site ainsi que sur google sans trouver réponse à mon problème.

    Quelqu'un pourrait-il m'aider ?

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    ta méthode fetchRow est elle définie dans ta classe ?

  3. #3
    Membre averti
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Par défaut
    Je récupère la gestion alors que tout est déjà en place depuis plusieurs années et que commence juste à faire du php poussé.
    Dans le fichier qui me pose problème, je ne trouve pas de définition de la classe fetchrow.

    Par contre, il y a 2 fichiers inclus mais dans aucun des 2 je ne trouve de définition de la classe.

    Une partie de la version web du logiciel permet aux utilisateurs de voir leurs dossiers en cours et d'ouvrir de nouveau qui fait également appel à fetchRow et il n'y a pas de problème.
    Aucune déclaration de la classe et les mêmes fichiers sont inclus et l'appel fonctionne

  4. #4
    Membre averti
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Par défaut
    Est-ce que cela peut provenir d'un problème au niveau de la configuration du serveur ?
    Je viens de me rendre compte que les 2 applis web sont sur le même serveur mais que pour y accéder on passe pas par le même port dans l'adresse web

  5. #5
    Membre confirmé Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Par défaut
    La classe n'est pas
    .

    Recherche un endroit ou il est écrit
    avec xxxx le nom de la classe en question.

    Cette classe devrait contenir la methode .

  6. #6
    Membre averti
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Par défaut
    La liaison vers la definition de la classe fetchrow se fait par l'intermédiaire de include "connexionpear.php"
    En effet, ce fichier contient la ligne : require_once'DB.php';
    Fichier DB.php dans lequel se trouve la declaration de la class.
    A priori le serveur utilise le module PEAR de PHP.

    Mais le fait de savoir cela ne résoud pas mon problème.

    Si je fait include "DB.php"; dans mon fichier principal.php j'ai un tas de message m'indiquant que certaines function/classe sont déjà définies.
    Cela me fait donc dire que la "liaison" vers DB.php fonctionne mais mon problème persiste et je ne sais pas pourquoi !

    Dans le fichier DB.php, j'ai la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function &fetchRow($fetchmode = DB_FETCHMODE_DEFAULT, $rownum=null)

  7. #7
    Membre confirmé Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Par défaut
    fetchRow n'est pas une classe mais une méthode d'une classe.

    Il est difficile de pouvoir t'aider sans pouvoir voir les fichiers en question.

    La syntaxe qu'il devrait y avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class A 
    {
             function fetchRow
    }
    $result3 = new A 
    $result3->fetchRow
    Ce qu'il est possible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class A 
    {
             function A1 
             function A2
    }
    $result3 = new A 
    $result3->fetchRow
    Retourne le message d'erreur que tu as posté, vu que fetchRow n'appartient pas à la classe A.

  8. #8
    Membre averti
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Par défaut
    Voici une partie du fichier DB.php dans lequel est déclaré fetchrow

    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
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    class DB
    {
    ...
    }
     
    class DB_Error extends PEAR_Error
    {
    ...
    }
     
    class DB_result
    {
    ...
    ...
    function &fetchRow($fetchmode = DB_FETCHMODE_DEFAULT, $rownum=null)
        {
            if ($fetchmode === DB_FETCHMODE_DEFAULT) {
                $fetchmode = $this->fetchmode;
            }
            if ($fetchmode === DB_FETCHMODE_OBJECT) {
                $fetchmode = DB_FETCHMODE_ASSOC;
                $object_class = $this->fetchmode_object_class;
            }
            if ($this->limit_from !== null) {
                if ($this->row_counter === null) {
                    $this->row_counter = $this->limit_from;
                    // Skip rows
                    if ($this->limit_type == false) {
                        $i = 0;
                        while ($i++ < $this->limit_from) {
                            $this->dbh->fetchInto($this->result, $arr, $fetchmode);
                        }
                    }
                }
                if ($this->row_counter >= (
                        $this->limit_from + $this->limit_count))
                {
                    if ($this->autofree) {
                        $this->free();
                    }
                    $tmp = null;
                    return $tmp;
                }
                if ($this->limit_type == 'emulate') {
                    $rownum = $this->row_counter;
                }
                $this->row_counter++;
            }
            $res = $this->dbh->fetchInto($this->result, $arr, $fetchmode, $rownum);
            if ($res === DB_OK) {
                if (isset($object_class)) {
                    // default mode specified in DB_common::fetchmode_object_class property
                    if ($object_class == 'stdClass') {
                        $arr = (object) $arr;
                    } else {
                        $arr = &new $object_class($arr);
                    }
                }
                return $arr;
            }
            if ($res == null && $this->autofree) {
                $this->free();
            }
            return $res;
        }
    ...
    ...
    }
     
    class DB_row
    {
    ...
    }
    Dans le fichier principal.php, qui utilise fetchrow c'est ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
    include "./fonction/fonctionprincipal.php";
    include "./fonction/connexionpear.php";
    ...
    $result3 = $db->query($req3);
    $i=0;
    $importancetab=$_SESSION[fichini.'importancetab'];
    while ($row3 =& $result3->fetchRow(DB_FETCHMODE_ASSOC))
    {
    ...
    }
    ...
    La liaison vers DB.php se fait via le fichier connexionpear.php qui a la ligne :

  9. #9
    Membre confirmé Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Par défaut
    Apparemment,

    Le résultat de $db->query($sql) devrait renvoyer une instance de la classe DB_result, comme la méthode n'est pas reconnue, il se pourrait que l'object crée lors de la commande $db->query($sql) n'appartienne pas a DB_result. Peut-être à cause d'un cas limite.

    essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $result3 = $db->query($req3);
    if($result3 instanceof 'DB_result') { echo "ok";}
    else { echo "not ok";}

  10. #10
    Membre averti
    Inscrit en
    Août 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Août 2009
    Messages : 24
    Par défaut
    Quand je fait le test, j'ai le message : Parse error: parse error in ...\principal.php on line 443
    Ligne qui correspond au test instanceof

    Après plusieurs tests de mon coté, je pense que le problème provient de la construction de la requête SQL car j'ai une requête qui a été construite ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select top 100 TblIncidents.nu_incident, TblIncidents.contact, TblIncidents.domaine_sousdomaine, TblIncidents.solution_apporté, TblIncidents.clos, TblIncidents.datedebut, TblIncidents.locked, TblIncidents.chez, TblIncidents.agence, 
    TblIncidents., 
    TblIncidents., 
    TblIncidents., 
    TblIncidents., informationsincidents1, horspenalité, tblincidents.etat from tblincidents, tblsociete where...
    J'ai mis un peu en forme pour que le problème saute au yeux
    J'ai créé en dur la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select top 100 TblIncidents.nu_incident, TblIncidents.contact, TblIncidents.domaine_sousdomaine, TblIncidents.solution_apporté, TblIncidents.clos, TblIncidents.datedebut, TblIncidents.locked, TblIncidents.chez, TblIncidents.agence, 
    TblIncidents.informationsincidents1, 
    TblIncidents.horspenalité, 
    tblincidents.etat from tblincidents, tblsociete where...
    Et je n'ai plus mon erreur Undefined fetchrow()

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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