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 :

probleme fonction


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut probleme fonction
    un probleme sans doute tout bete, j'appel plusieurs fois une fonction par l'intermédaire d'un while, et lors de deuxieme appel, j'ai ce message d'errreur:
    Fatal error: Cannot redeclare fonctionbaliseouvrante() (previously declared in d:\logiciels\easyphp1-7\www\rss\fonctions.php:26) in d:\logiciels\easyphp1-7\www\rss\fonctions.php on line 26

    voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	while ($nomf=mysql_fetch_object ($resultatlisteflux)) //Lecture ligne par ligne du resultat de la requete
    	{
    		$nom= $nomf->nomflux;	//nom du flux
    		$url= $nomf->urlflux;	//URL du flux
    		echo "<b>Les derni&egrave;res nouvelles issues de $nom:</b><br /><br />"
    		. "<ul>";
    		afficherflux($url);
    		echo "</ul>";
    	}

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    fais voir la dite fonction...
    elle n'aurait pas des sous-fonctions ou ne ferait pas un include d'un fichier contenant une fonction à tout hasard... ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut
    elle a des sous-fonctions:
    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    function afficherflux($fichier)
    	{
    		// Ma propre fonction de traitement des balises ouvrantes
       	 	function fonctionBaliseOuvrante($parseur, $nomBalise, $tableauAttributs)
        	{
    			// En fait... nous nous conteterons de mémoriser le nom de la balise
            	// afin d'en tenir compte dans la fonction "fonctionTexte"
     
           		global $derniereBaliseRencontree;
     
            	$derniereBaliseRencontree = $nomBalise;
        	}
     
        	// Ma propre fonction de traitement des balises fermantes
        	function fonctionBaliseFermante($parseur, $nomBalise)
        	{
            	global $derniereBaliseRencontree;
            	global $titre;
            	global $lien;
    			global $i;
     
     
     
           		switch ($nomBalise) {
                	case "CHANNEL" :
                    	// nous quittons le bloc channel
                    	// nous pouvons afficher le titre de notre
                    	// liste de d'articles
                    	$titre=utf8_encode($titre);
                       echo "<a href=\"$lien\">$titre</a>";
                    	// Et on oublie    
                    	$titre = "";
                   		$lien = "";
                    break;
               		case "ITEM" :
                    	// nous quittons un bloc item
                    	// nous pouvons afficher le titre de l'article
    					$titre=utf8_encode($titre);
    					$titre=stripslashes($titre);
    					if (substr($lien,0,2)=="UR") {
    						$lien=substr($lien,4);
    					}
    					if ($i==0) {
                    		echo "<p style='background-color:#CCCCCC'><a href=\"$lien\" target=\"_blank\">$titre</a></p>";
    						$i=1;
    					} else {
    					    echo "<p style='background-color:#BBBBBB'><a href=\"$lien\" target=\"_blank\">$titre</a></p>";
    						$i=0;
    					}
                    	// et on oublie
                    	$titre = "";
                    	$lien = "";
                    break;
           		 }
     
            	// On oublie la dernière balise rencontrée
            	// et tout le reste
            	$derniereBaliseRencontree = "";
       		}
     
        	// Ma propre fonction de traitement du texte
        	// qui est appelée par le "parseur"
        	function fonctionTexte($parseur, $texte)
        	{
            	global $derniereBaliseRencontree;
            	global $titre;
            	global $lien;
     
            	// Nous n'affichons pas le texte ou lien directement
            	// nous attendrons de rencontrer la balise fermante
            	// et ainsi d'avoir tous les élements avant l'affichage.
            	// ATTENTION: Par défaut les noms des balises sont
            	//            mises en majuscules
     
            	switch ($derniereBaliseRencontree) {
                	case "TITLE":
                    	$titre = $texte;
                    break;
                	case "LINK":
                    	$lien = $texte;
                    break;
            	}        
        	}
     
        	// Création du parseur XML
        	$parseurXML = xml_parser_create();
     
        	// Je précise le nom des fonctions à appeler
        	// lorsque des balises ouvrantes ou fermantes sont rencontrées
        	xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante"
                                           , "fonctionBaliseFermante");
     
        	// Je précise le nom de la fonction à appeler
        	// lorsque du texte est rencontré
        	xml_set_character_data_handler($parseurXML, "fonctionTexte");
     
        	// Ouverture du fichier
        	$fp = fopen($fichier, "r");
        	if (!$fp) die("Impossible d'ouvrir le fichier XML");
     
        	// Lecture ligne par ligne
        	while ( $ligneXML = fgets($fp, 1024)) {
            // Analyse de la ligne
            // REM: feof($fp) retourne TRUE s'il s'agit de la dernière
            //      ligne du fichier.
            xml_parse($parseurXML, $ligneXML, feof($fp)) or
                die("Erreur XML");
        }
     
        xml_parser_free($parseurXML);
        fclose($fp);
    	}

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    ben pas de fonctions imbriquées... sinon ça plante

  5. #5
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    les erreurs du genre "cannot redeclare function ou class ou ..." sont dûes exclusivement au fait que:


    tu aurais dans le même script déclaré plusieurs fois la même fonction
    tu aurais inclus plusieurs fois le même script.

    Une méthode pour éviter cet éccueil est de faire comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!function_exists('ta_fonction'))
    {
     require 'ton_fichierdefonctions';
    }
    tu peux aussi utiliser

    include_once ou require_once

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

Discussions similaires

  1. [XSL]Probleme fonction recursive
    Par Le-Cortex dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 12/12/2005, 15h10
  2. [Mail] Probleme fonction mail()
    Par tissot dans le forum Langage
    Réponses: 1
    Dernier message: 14/11/2005, 12h55
  3. problème fonctions callback
    Par youp_db dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 02/10/2005, 14h47
  4. probleme fonction gethostbyname
    Par oclone dans le forum Développement
    Réponses: 6
    Dernier message: 14/04/2005, 10h31
  5. probleme fonction syntaxe
    Par gIch dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/02/2005, 09h52

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