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 :

cannot redeclare function


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de Balbuzard
    Profil pro
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 263
    Points
    263
    Par défaut cannot redeclare function
    Bonjour,

    Je fais encore appel à vous car j'ai quelques soucis avec une fonction.
    Je précise d'abord qu'en local ça marche, mais plus quand je mets les ajouts en ligne.

    Je déclare dans un fichier (connexion.php) un certain nombre de fonctions pour me connecter à ma base de données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function connexion()
    	{
    		// Connexion à la base de données
    		mysql_connect("localhost", "admin", "************") or die(mysql_error());
    		mysql_select_db("db") or die(mysql_error());
    	}
    J'importe les fichiers php dans lesquels sont écrites ces fonctions.
    J'appelle mes fonctions ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    			connexion();
    ?>
    Une fois le fichier importé avec un include.
    Mon navigateur me renvoie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Cannot redeclare connexion() (previously declared in /home/concilia/public_html/utilitaires/connexion.php:8) in /home/concilia/public_html/utilitaires/connexion.php on line 10
    Je comprends pas pourquoi il fonctionne en local et pas en ligne. De plus, je vois mal où c'est que j'ai fais plusieurs appels à a fonction, si j'interprète bien le message d'erreur, il semble dire que je déclare plusieurs fois la même chose?

    Je vous remercie vivement de vos réponses, indices, et éclaircissements :-)
    ZORRO
    Plus Vengeur que Masqué

  2. #2
    FoxLeRenard
    Invité(e)
    Par défaut
    A mon avis je paris le champagne que c'est le nom...
    connexion est trop génerique, alors essais "connexionMysql"
    tu verra ça va marcher

  3. #3
    Membre actif Avatar de Balbuzard
    Profil pro
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 263
    Points
    263
    Par défaut
    Ça parraissait très sensé comme réponse, mais malheureusement, je crois que j'ai gagné le champagne;

    J'ai renommé connexionBDD le dossier où j'ai le fichier php à inclure, et connexionMySQL() la fonction dont je souhaite me servir;

    Il renvoit quasiment la même chose, à savoir :

    Fatal error: Cannot redeclare connexionmysql() (previously declared in /home/concilia/public_html/utilitaires/connexionBDD.php:8) in /home/concilia/public_html/utilitaires/connexionBDD.php on line 10
    J'ai réessayé avec des noms encore plus différents (cMySQL, c) ce qui redonne la même chose.
    Enfin, j'ai essayé avec une fonction qui ne se connecte pas à une base de données (une seule instruction : echo "Hello, World" qui elle fonctionne sans problème.

    Ce qui est le plus bizzare, c'est que j'encadre l'appel à ma fonction par des echo pour savoir si elle est exécutée, les echos renvoient ce qu'il faut (donc la fonction s'exécute) mais il renvoie quand même fatal error par la suite, signifiant qu'après l'erreur, plus rien ne s'exécute?

    Bon voilà, merci beaucoup de ton aide, elle aura permis de relancer la discussion ;-)
    ZORRO
    Plus Vengeur que Masqué

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    juste une idée.. essaie de faire des include_once à la place des include (si ce n'est pas déjà fait )

  5. #5
    FoxLeRenard
    Invité(e)
    Par défaut
    Bon alors aprés avoir regardé de plus pret, j'en conclus que tu fais sans le voir, deux includes du PHP contenant ta fonction

    Tu sais c'est parfois vicieux ! prends donc le PHP que tu test,

    Regardes tout les include qu'il possede, et dans ces includes controle que
    le PHP de la fonction n'est pas réappelé !

  6. #6
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Bon alors aprés avoir regardé de plus pret, j'en conclus que tu fais sans le voir, deux includes du PHP contenant ta fonction

    Tu sais c'est parfois vicieux ! prends donc le PHP que tu test,

    Regardes tout les include qu'il possede, et dans ces includes contrôle que
    le PHP de la fonction n'est pas réappelé !
    Je pense aussi que cela vient de la c'est comme faire un include avec un session_start par exemple et de réouvrir une session derrière...
    ►Ne pas oublier le

  7. #7
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par obito Voir le message
    Je pense aussi que cela vient de la c'est comme faire un include avec un session_start par exemple et de réouvrir une session derrière...
    Oui 100% OK avec toi, et au jeux des include on se fait prendre facilement

  8. #8
    Membre actif Avatar de Balbuzard
    Profil pro
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Points : 263
    Points
    263
    Par défaut
    En effet, c'était exactement à cause de ça, les inclusions de pages les unes dans les autres sont assez pratiques pour économiser du code et optimiser sa présentation, mais là, c'était assez tordu à voir.

    En plus de vos conseils, ce qui m'a aidé était le fait que les "echo" que j'avais mis un peu partout fonctionnaient tous, le problème n'était pas dans la page que je regardais, mais dans les autres, où j'importait également mon fichier.

    Je me rends compte une fois de plus du caractère facétieux des include; au moins je vois que je ne suis pas seul dans ce cas ;-)

    Merci en tout cas vivement de vos réponses, ce sont elles qui m'ont guidées vers la solution :-)
    ZORRO
    Plus Vengeur que Masqué

  9. #9
    FoxLeRenard
    Invité(e)
    Par défaut
    Super et A++ grand chevalier

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

Discussions similaires

  1. Fatal error: Cannot redeclare function checkdate()
    Par gscorpio dans le forum Langage
    Réponses: 2
    Dernier message: 08/07/2008, 16h28
  2. Réponses: 3
    Dernier message: 30/11/2006, 20h54
  3. Message d'erreur absurde du genre Cannot redeclare
    Par philippe281281 dans le forum Langage
    Réponses: 11
    Dernier message: 17/11/2006, 11h35
  4. Réponses: 32
    Dernier message: 26/09/2006, 09h40
  5. Cannot redeclare class...
    Par DeezerD dans le forum Langage
    Réponses: 4
    Dernier message: 02/11/2005, 18h51

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