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 :

readDataForwards(), refus de la mêm fonction dans la même page


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Femme Profil pro
    Webdesigner
    Inscrit en
    Juin 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juin 2014
    Messages : 176
    Points : 74
    Points
    74
    Par défaut readDataForwards(), refus de la mêm fonction dans la même page
    bonjour, j'ai ceci comme 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
     
    function readDataForwards($bdd){
        $sql='SELECT numero, nom_client,date_offre FROM _1offre_de_prix  ORDER BY numero DESC ';
    try{
        $stmt=$bdd->prepare($sql,array(PDO::ATTR_CURSOR,PDO::CURSOR_SCROLL));
        $stmt->execute();
        while($row=$stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)){
            $data="- \n Numero offre:\n <font color='#ff1493'>".$row[0]."</font>,\n Nom client:\n <font color='blue'>".$row[1]."</font>,\n Date offre:\n <font color='red'>".$row[2]."</font>. <br>";
            print $data;
        }
        $stmt=null;
        }catch(PDOException $e){
        print $e->getMessage();
    }
    }
    readDataForwards($bdd);
    celui-ci est inclu dans une div dans ma page documents.php, mais lorsque je veux remettre la même fonction (avec une modification dans le SELECT pour avoir une autre table) il me le refuse en disant que la fonction existe déjà dans cette page...

    Cannot redeclare readDataForwards() (previously declared in C:\wamp\www\Jung-Distribution\affichage_Script_documents_jung.php:18) in C:\wamp\www\Jung-Distribution\affichage_Script_BLF_documents_jung.php on line 24
    Call Stack
    Comment puis-je faire?
    merci de vos réponses

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    En donnant un autre nom à ta 2e fonction ?

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    celui-ci est inclu dans une div dans ma page documents.php
    Non, ça n'a strictement rien à voir. PHP ne sait même pas ce qu'est une div.

    Formulé correctement, ça donnerait :
    "Je mélange tout dans ma page (affichage, traitements, fonctions) et à un endroit, dans de l'affichage HTML, j'essaye de redéfinir une fonction qui existe peut-être déjà dans un autre débarras de mon code".

    Tout cela pour te dire qu'il est essentiel d'organiser son code pour le rendre plus facile à lire, plus facile à déboguer et à maintenir.
    Si tu faisais de la sorte, tu ne te retrouverais surement pas à en être à ne pas savoir si une fonction a déjà été définie ou non.

    Bref, dans ton cas, le mieux serait de réécrire ton code (mais mon petit doigt me dit que tu ne voudras pas...) mais au pire, tu peux utiliser function_exists().

  4. #4
    Membre régulier
    Femme Profil pro
    Webdesigner
    Inscrit en
    Juin 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juin 2014
    Messages : 176
    Points : 74
    Points
    74
    Par défaut
    Citation Envoyé par Bovino Voir le message
    "Je mélange tout dans ma page (affichage, traitements, fonctions) et à un endroit, dans de l'affichage HTML, j'essaye de redéfinir une fonction qui existe peut-être déjà dans un autre débarras de mon code".

    Tout cela pour te dire qu'il est essentiel d'organiser son code pour le rendre plus facile à lire, plus facile à déboguer et à maintenir.
    Si tu faisais de la sorte, tu ne te retrouverais surement pas à en être à ne pas savoir si une fonction a déjà été définie ou non.
    alors non justement mon code est bien clair, dans ma page documents.php je n'ai que 2 div, car le lien est doc.php?page=documents.php
    donc je n'ai qu'une <div> avec un include ''; qui est a donc la même fonction readDataForwards!

    et ensuite, j'ai une autre <div>avec un autre include ''; avec un readDataForwards mais qui appel une autre table...d'où l'erreur

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    ...d'où l'erreur
    Bizarre, moi j'aurais plutôt conclu avec "CQFD"...
    Ce que tu tentes d'expliquer démontre bien que ton code est un bazar sans nom...
    Plusieurs fonctions ayant le même nom à des endroits différents ; définir plusieurs fonctions pour faire la même chose à un paramètre près ; une fonction qui allie requête SQL et affichage à même la page...

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu as donc 2 fonctions différentes qui portent le même nom, qui sont définies dans 2 scripts différents, qui sont eux-même inclus dans un même 3e script.

    C'est exactement comme si tu avais une casserole sur une étagère de ton placard et une autre casserole sur une autre étagère du même placard et que tu demandais à un ami qui n'a jamais mis les pieds dans ta cuisine "Prends la casserole dans le placard". Tu vas obtenir comme réponse "Laquelle ?".

    Si tes fonctions font des choses différentes, il faut leur donner un nom différent.

  7. #7
    Membre régulier
    Femme Profil pro
    Webdesigner
    Inscrit en
    Juin 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juin 2014
    Messages : 176
    Points : 74
    Points
    74
    Par défaut
    bon ok je vais essayer d'être plus clair alors, car je veux bien lui donner un autre nom mais là il va falloir m'aiguiller vu que la fonction est: readDataForwards () et donc je pense que l'on ne peut pas la changer...

    voilà mon documents ou je veux afficher:
    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
     
    <?php
    session_start();
    ?>
    <p>page de documents.php</p>
     
     
    <div>
    <h3>Affichage des 5 dernières offres créé.</h3>
        <?php
        include 'affichage_Script_documents_jung.php';
     
        ?>
     
    </div>
    <div>
        <h3>Affichage des 5 derniers BLF créé.</h3>
        <?php
        include 'affichage_Script_BLF_documents_jung.php';
        ?>
     
    </div>
    affichage_Script_documents_jung.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
     
    <?php
    include 'bdd.php';
     
    function readDataForwards($bdd){
        $sql='SELECT numero, nom_client,date_offre FROM _1offre_de_prix  ORDER BY numero DESC ';
    try{
        $stmt=$bdd->prepare($sql,array(PDO::ATTR_CURSOR,PDO::CURSOR_SCROLL));
        $stmt->execute();
        while($row=$stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)){
            $data="- \n Numero offre:\n <font color='#ff1493'>".$row[0]."</font>,\n Nom client:\n <font color='blue'>".$row[1]."</font>,\n Date offre:\n <font color='red'>".$row[2]."</font>. <br>";
            print $data;
        }
        $stmt=null;
        }catch(PDOException $e){
        print $e->getMessage();
    }
    }
    readDataForwards($bdd);
    ?>
    affichage_Script_BLF_documents_jung.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
     
    <?php
    include 'bdd.php';
     
     
    function readDataForwards($bdd){
        $sql='SELECT numero, date, nom  FROM _2blf  ORDER BY numero DESC ';
        try{
            $stmt=$bdd->prepare($sql,array(PDO::ATTR_CURSOR,PDO::CURSOR_SCROLL));
            $stmt->execute();
            while($row=$stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)){
                $data="- \n Numero BLF:\n <font color='#ff1493'>".$row[0]."</font>,\n Nom client:\n <font color='blue'>".$row[1]."</font>,\n Date BLF:\n <font color='red'>".$row[2]."</font>. <br>";
                print $data;
            }
            $stmt=null;
        }catch(PDOException $e){
            print $e->getMessage();
        }
    }
    readDataForwards($bdd);
    ?>
    alors je pensais faire ceci dans le même fichier Script php pour éviter d'en avoir 2 et utiliser qu'une seule fois cette fonction readDataForwards() ==>
    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
     
    <?php
    include 'bdd.php';
     
    function readDataForwards($bdd){
        $sql='SELECT *  FROM _2blf, _1offre  ORDER BY numero DESC ';
        try{
            $stmt=$bdd->prepare($sql,array(PDO::ATTR_CURSOR,PDO::CURSOR_SCROLL));
            $stmt->execute();
            while($row=$stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)){
                $data="- \n Numero BLF:\n <font color='#ff1493'>".$row[0]."</font>,\n Nom client:\n <font color='blue'>".$row[1]."</font>,\n Date BLF:\n <font color='red'>".$row[2]."</font>. <br>";
                print $data;
            }
            $stmt=null;
        }catch(PDOException $e){
            print $e->getMessage();
        }
    }
    readDataForwards($bdd);
    ?>
    le seul soucis c'est pour le print $data;, vu que je veux dans la premier <div> de documents.php que ce ne soit que les offres qui s'y affiche (les 5 premières) et dans l'autre <div> que ce soit les BLF qui s'y affiche (les 5 premiers également)...

    donc je ne vois pas comment le faire en un seul fichier

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je ne vois pas pourquoi tu ne pourrais pas changer le nom de la fonction. Il faut juste bien faire attention à modifier également l'appel à la fonction.
    Par exemple pour ton script affichage_Script_BLF_documents_jung.php, tu peux appeler ta fonction readForwardBLF :
    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
     
    <?php
    include 'bdd.php';
     
     
    function readDataForwardsBLF($bdd){
        $sql='SELECT numero, date, nom  FROM _2blf  ORDER BY numero DESC ';
        try{
            $stmt=$bdd->prepare($sql,array(PDO::ATTR_CURSOR,PDO::CURSOR_SCROLL));
            $stmt->execute();
            while($row=$stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)){
                $data="- \n Numero BLF:\n <font color='#ff1493'>".$row[0]."</font>,\n Nom client:\n <font color='blue'>".$row[1]."</font>,\n Date BLF:\n <font color='red'>".$row[2]."</font>. <br>";
                print $data;
            }
            $stmt=null;
        }catch(PDOException $e){
            print $e->getMessage();
        }
    }
    readDataForwardsBLF($bdd);
    ?>

  9. #9
    Membre régulier
    Femme Profil pro
    Webdesigner
    Inscrit en
    Juin 2014
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juin 2014
    Messages : 176
    Points : 74
    Points
    74
    Par défaut
    ah génial merci je ne savais pas que je pouvais la renommer je pensais que c'était impossible....
    ca fonctionne nikel...

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tant que ce n'est pas un code qui est généré par autre chose (auquel cas ta modif risque d'être écrasée par la prochaine génération) ou un morceau d'un framework (auquel cas ça peut problème avec les montées de version du framework), tu peux faire ce que tu veux avec ton code.

    Si tu as envie d'appeler ta fonction laMereMichelleChercheSonChat ou toto_fait_du_velo ou même f, tu peux le faire.

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

Discussions similaires

  1. [POO] lancer une fonction dans une autre page
    Par Eskevar dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/12/2008, 19h30
  2. Tracer 3 fonctions dans le même graphique
    Par Lost in dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/06/2008, 14h44
  3. [MySQL] Appel de fonction dans la même page
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/01/2007, 01h31
  4. Réponses: 3
    Dernier message: 30/11/2006, 07h25
  5. [Système] exécuter fonction php dans la même page ?
    Par AzertyH dans le forum Langage
    Réponses: 6
    Dernier message: 22/11/2006, 11h01

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