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 :

Perte de type en retour de fonction


Sujet :

Langage PHP

  1. #1
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut Perte de type en retour de fonction
    Bonjour,
    j'ai une classe qui gere ma connection a ma base de données
    et dans cette classe, j'ai la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function exportBDInfos($schemaName,$tableroot)
    {
    	$conn_ODBC = odbc_connect($this->host, $this->login, $this->password) ;
    	$result = odbc_columns($conn_ODBC, $this->host , $schemaName , $tableroot , "%") ;
    	return $result;
    }
    dans le corps de la fonction, le valeur de $result est
    resource(27) of type ("odbc result")

    par contre quand je l'appelle dans une autre page avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result = $dbConnectObj->exportBDInfos($this->schemaName,$this->tableroot);
    la valeur de $result est resource(27) of type ("unknow")

    Si quelqu'un a une idée de corriger cela ou d'une raison de cette erreur,
    je suis prenant

    ** Pour infos pour voir le résultat je developpe sous Zend et ces valeurs sont celles affichées par le debuggeur.

    merci d'avance

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    PHP4 ? Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function & exportBDInfos($schemaName,$tableroot)
    {
       $conn_ODBC = odbc_connect($this->host, $this->login, $this->password) ;
       $result =& odbc_columns($conn_ODBC, $this->host , $schemaName , $tableroot , "%") ;
       return $result;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result =& $dbConnectObj->exportBDInfos($this->schemaName,$this->tableroot);

  3. #3
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    oui c'est bien en php4
    mais ta modification a change juste une chose
    au lieu d'avoir
    resource(27) j'ai resource(26)

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Ben c'est bien, tu as économisé une ressource

    Au fait pourquoi tu as besoin de savoir le type de la ressource ?

  5. #5
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    En fait le probleme c'est plutot la perte du type de ressource,
    car apres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result =& $dbConnectObj->exportBDInfos($this->schemaName,$this->tableroot);
    je fais un odbc_fetch_into avec $result, mais la j'ai le droit a un joli warning disant
    odbc_fetch_into(): 26 is not a valid ODBC result resource in E:\www\dev.diego.fr\frameworkV6\DIClass\class.DIObject.php on line 1611
    et c'est surtout cela mon problème.

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je dirais, à priori, que ca viens de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $conn_ODBC = odbc_connect($this->host, $this->login, $this->password) ;
    c'est fait à l'intérieur de la fonction et du coup, quand tu sors de la fonction, le ramasse-miettes passe et supprime cette connection, du coup ta ressource est invalide

  7. #7
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    donc une solution serait de faire une connexion permanente?
    ou alors il y a une autre solution?

    en effet avec un pconnect ca marche bien
    je te remercie pour ton coup de main, au moins la prochaine je serais d'ou ca vient

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    non, tu utilises la même connexion partout dans le code. Exemple parmis tant d'autres :
    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
     
    class XXX {
       var $_connexion;
       ...
       function &getConnexion() {
          if (!$this->_connexion) {
             $this->_connexion =& odbc_connect($this->host, $this->login, $this->password) ;
          }
          return $this->_connexion;
       }
     
       function &exportBDInfos($schemaName,$tableroot) {
          $result =& odbc_columns($this->getConnexion(), $this->host , $schemaName , $tableroot , "%") ;
          return $result; 
       }
    }
     
     
    $result =& $dbConnectObj->exportBDInfos($this->schemaName,$this->tableroot);

  9. #9
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    C'etait exactement ce que j'étais entrain de faire,
    je modifiais ma classe de connection pour stocker l'identifiant de connection dans l'objet pour eviter la connexion persistante et garder ma connection ouverte le temps nécessaire

    et encore merci.

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

Discussions similaires

  1. [RFC] Déclaration du type de retour des fonctions
    Par Tsilefy dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2014, 20h07
  2. Type de retour de fonction
    Par jpguiche dans le forum Langage
    Réponses: 2
    Dernier message: 07/11/2013, 16h03
  3. Réponses: 4
    Dernier message: 08/08/2013, 14h34
  4. type de retour de fonction template
    Par k1000 dans le forum Langage
    Réponses: 5
    Dernier message: 21/04/2008, 11h41
  5. Réponses: 1
    Dernier message: 25/01/2006, 10h30

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