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 :

Appel d'une fonction sur un fichier


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    à la recherche d'un stage de fin de formation dans le décisionnel
    Inscrit en
    Juillet 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : à la recherche d'un stage de fin de formation dans le décisionnel

    Informations forums :
    Inscription : Juillet 2002
    Messages : 154
    Points : 85
    Points
    85
    Par défaut Appel d'une fonction sur un fichier
    Bonjour à vous
    voilà avant je vais essayer d'exposer ce que je chercher à bidouiller.
    pour mieux organiser mes fichiers et pr un code bien fait, j ai pensé à mettre dans un fichier
    function.php les qlq fonction dont j'aurais besoin, exemple : se connecter à une base mysql avec choix de la base;

    j'ai alors le fichier fonction.php suivant :

    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
     
    <?php
     
    function openDB(){
     
    echo 'je suis fonction.php '; // message témoin, 
     
      global $db_host;
      global $db_login;
      global $db_pass;
      global $db_basename;
      global $dbConnect;
      global $dbSelect;
     
      $db_host="127.0.0.1";
      $db_login="root";
      $db_pass="";
      $db_basename="gestdoc";
     
      //connextion à une base de donnée 
      $dbConnect = mysql_connect($db_host, $db_login, $db_pass); 
      $dbSelect = mysql_select_db($db_basename);
     
    }
     
    clodeDB(){
      mysql_close();
    }
    ?>

    et dans un autre fichier, recherche.php (par exemple ) j'ai mis :

    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
     
    <?php
    funcrion recherche(){
     
        include ('fonction.php') 
         openDB();  // ici appel à la fonction qui ouvre la connexion à MySQL avecsélection de la base
     
         $sql ="select .... "; 
     
        $result = mysql_query($dbConnect,$sql);
     
    .... 
     
    closeDB(); 
     
    } 
    ?>

    Mais ça marche pas

    qlq un à une idée, comment mieux organiser ses scriptes avec des fonction qu'on peut appeler par tout.

    Merci

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    1 - funcrion à remplacer par function
    2 - Ou appelles-tu la fonction recherche() ?

    Car a mon avis c'est ca qui coince, tu mets ton traitement dans une fonction que tu n'appelles pas.

  3. #3
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Il faut que tu remettes tes déclarations "global" au début de la fonction recherche.
    La liste des arguments de mysql_query est inversée.

  4. #4
    Membre régulier
    Homme Profil pro
    à la recherche d'un stage de fin de formation dans le décisionnel
    Inscrit en
    Juillet 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : à la recherche d'un stage de fin de formation dans le décisionnel

    Informations forums :
    Inscription : Juillet 2002
    Messages : 154
    Points : 85
    Points
    85
    Par défaut
    la fonction rechercher est appelé par

    un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (isset($_GET['fonction']) && $_GET['fonction']=="find") rechercher();
    c'est juste pr avoir les url : rechercher.php?fonction=find et ça présente pas d eproblème si j'ajoute un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo 'messahe temoin rechercher' ;
    ça s'affiche




    j'ai essayé de déclarer mes variable global au début de la fonction, mais ça marche pas,
    même le message témoin que j'ai ajouté au début de fonction.php ne s'affiche pas,

    Merci

  5. #5
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Points : 234
    Points
    234
    Par défaut
    dans ta fonction qui se connecte a ta base de données ajoute a la fin un pour récupérer la connexion que tu viens d'ouvrir.

    Ensuite appelle la fonction comme ceci : car sinon ta bariable $dbConnect ne vaut rien dans la fonction recherche (et donc sa ne marchera pas)

    Normalement sa devrait mieux marcher comme ca

  6. #6
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Points : 234
    Points
    234
    Par défaut
    et ta fonction closeDb(), passe lui la variable $dbConnect en paramètre, et modifie donc la fonction comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    clodeDB($dbConnect){
      mysql_close($dbConnect);
    }
    comme ca tu fermes la connexion que tu viens d'ouvrir (si tu veux faire un code propre et ménager ta base c'est pas mal)

  7. #7
    Membre régulier
    Homme Profil pro
    à la recherche d'un stage de fin de formation dans le décisionnel
    Inscrit en
    Juillet 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : à la recherche d'un stage de fin de formation dans le décisionnel

    Informations forums :
    Inscription : Juillet 2002
    Messages : 154
    Points : 85
    Points
    85
    Par défaut
    je reçois tjrs

    Fatal error: Call to undefined function openDB()

    comme message d erreur

    le prob est ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    ...
     
     global $dbConnect;
     
      include('config.php');
    // cette ligne est la cause de l erreur 
    $dbConnect = openDB(); 
    ...
     
    ?>

  8. #8
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Points : 234
    Points
    234
    Par défaut
    tu fais un include du fichier "config.php" mais tu as dis que tes fonctions étaient dans le fichier "fonction.php"

    c'est une erreur ou tu as renomé le fichier qui contient les fonctions ?

  9. #9
    Membre régulier
    Homme Profil pro
    à la recherche d'un stage de fin de formation dans le décisionnel
    Inscrit en
    Juillet 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : à la recherche d'un stage de fin de formation dans le décisionnel

    Informations forums :
    Inscription : Juillet 2002
    Messages : 154
    Points : 85
    Points
    85
    Par défaut
    c'était juste une erreur commise bêtement quand j'ai voulu expliquer ici sur le forum, mais sur mes scripts les noms des fichiers pour include sont bon.


    Merci

  10. #10
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Points : 234
    Points
    234
    Par défaut
    Oki

    C'est résolu alors ? (ou tu as toujours l'erreur ?)

  11. #11
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    as-tu activé l'affichage des avertissements ? (mettre error_reporting à E_ALL dans le php.ini)

    Je soupçonne moi aussi une erreur lors de l'include. Tu peux aussi essayer en utilisant require à la place d'include (entraine une erreur fatale si le fichier à inclure n'existe pas)

  12. #12
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    483
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2007
    Messages : 483
    Points : 234
    Points
    234
    Par défaut
    En effet je pensais aussi a remplacer include par require, vérifie le chemin aussi

  13. #13
    Membre régulier
    Homme Profil pro
    à la recherche d'un stage de fin de formation dans le décisionnel
    Inscrit en
    Juillet 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : à la recherche d'un stage de fin de formation dans le décisionnel

    Informations forums :
    Inscription : Juillet 2002
    Messages : 154
    Points : 85
    Points
    85
    Par défaut
    j'ai déjà essayé require, c'est pareil, le fichier existe, pour avancer, j'ai copié les fonctions dans le même fichier ou seront appeler question de ne pas tarder sur ça, après je dois les ressortir pour organiser mes scripts
    mais j'ai toujours le problème d'appel de la fonction

  14. #14
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Tu peux nous donner les codes complets de tes fichiers ? (ou mieux encore, essayer de les réduire à un code le plus court possible reproduisant l'erreur, avec 5 lignes de code max par fichier)

  15. #15
    Membre régulier
    Homme Profil pro
    à la recherche d'un stage de fin de formation dans le décisionnel
    Inscrit en
    Juillet 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : à la recherche d'un stage de fin de formation dans le décisionnel

    Informations forums :
    Inscription : Juillet 2002
    Messages : 154
    Points : 85
    Points
    85
    Par défaut
    peut être je ferais mieux d'expliquer ce que je cherche à faire comme ça si quelqu'un à une autre idée plus pratique, je suis toujours prôneur.

    je cherche à mettre des fonctions qui gèrent la base de données dans un seul fichier, et de pouvoir appeler telle ou telle fonction selon le besoin.
    (je crois que le but principale des fonctions est d'éviter la répétition bloc de code )

    premier fichier ( on l'appelé config.php)
    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
     
    <?php
     
    function openDB(){
      global $db_host;
      global $db_login;
      global $db_pass;
      global $db_basename;
     
     
      $db_host="127.0.0.1";
      $db_login="root";
      $db_pass="";
      $db_basename="gestdocs";
     
    //connextion à MySQL 
    mysql_connect($db_hodt, $db_login, $_db_pass);
    // selection de la base de donnée  
    mysql_select_db($db_basename);
     
    }
     
    ?>
    le deuxième fichier ( rechercher.php )

    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
     
    <?php
     
    recherche();
     
    function recherche(){
     
        include ('config.php') ;
         openDB();  // ici appel à la fonction qui ouvre la connexion à MySQL avecsélection de la base
     
         $sql ="select * from doc "; 
        $result = mysql_query($sql);
     
      echo '<h1>'.mysql_num_rows($result).'</h1>' ;
     
    } 
    ?>

  16. #16
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    J'ai copié/collé le contenu de tes deux fichiers pour tester en local chez moi, et tout fonctionne (la fonction openDB est bien exécutée)...

  17. #17
    Membre régulier
    Homme Profil pro
    à la recherche d'un stage de fin de formation dans le décisionnel
    Inscrit en
    Juillet 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : à la recherche d'un stage de fin de formation dans le décisionnel

    Informations forums :
    Inscription : Juillet 2002
    Messages : 154
    Points : 85
    Points
    85
    Par défaut
    je viens de changer le concept de ce que je voulais faire,
    j'ai ajouté une nouvelle fonction qui ne fait que exécuter la raquette sql passée en paramètre et renvoi le résultat de cette raquette et ça marche super bien :p ici le code

    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
     
    config.php
    <?php
     
    function openDB(){
     
      $db_host="127.0.0.1";
      $db_login="root";
      $db_pass="";
      $db_basename="gestdoc";
     
      //connextion à MySQL 
      $dbConnect = mysql_connect($db_host, $db_login, $db_pass) or die (mysql_error());
      // selection de la base de donnée  
      $dbSelect = mysql_select_db($db_basename, $dbConnect ) or die (mysql_error());
    }
     
    function requette($sql){
      openDB();
      $result =  mysql_query($sql);
          if (!$result) die('Requête invalide : ' . mysql_error());
          return $result;
    }
     
    ?>
    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
     
    rechercher.php
    <?php
     
    recherche();
     
    function recherche(){
     
        include ('config.php') ;
     
        $sql ="select * from doc "; 
     
        $result = requette($sql);
     
      echo '<h1>'.mysql_num_rows($result).'</h1>' ;
     
    } 
    ?>
    Merci à vous tous

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/12/2010, 18h05
  2. Macro boutton - Appel d'une fonction sur différentes feuilles
    Par tibss dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 16/11/2010, 09h26
  3. Appele a une fonction sur C#
    Par karimro123 dans le forum C#
    Réponses: 7
    Dernier message: 18/04/2010, 12h08
  4. Réponses: 6
    Dernier message: 16/11/2009, 08h58
  5. appel d'une fonction sur autre page
    Par champion dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/03/2007, 14h37

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