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 includes en fonction du nom de la page


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Août 2010
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : Août 2010
    Messages : 216
    Points : 96
    Points
    96
    Par défaut Appel includes en fonction du nom de la page
    Bonjour,

    Je tente d'appeler mes includes pour différentes pages via 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
    $link=(isset($_GET['link']))?trim(rawurldecode((string)$_GET['link'])):'';
    switch ($link) {
    	case 'accueil':
    		$include1='("./includes/inc_newsFunctions.php");';
    		$include2='("./includes/inc_cocktailsFunctions.php");';
    		$include3='("./includes/inc_accueilFunctions.php");';
    		break;
    	case 'magazine':
    		$include1='' ;
    		$include2='';
    		$include3='';
    		$include4='';
    		break;
    	default:
    		$include1='' ;
    		$include2='';
    		$include3='';
    		$include4='';
    }
    require_once ''.$include1."\n"; 
    require_once ''.$include2."\n"; 
    require_once ''.$include3."\n"; 
    require_once ''.$include4."\n";
    pour le moment je teste sur la page d'accueil mais ça me renvoi un message d'erreur:
    Warning: main(("./www/includes/inc_newsFunctions.php"); ) [function.main]: failed to open stream: No such file or directory in /homez.318/nightfev/www/n63show.php on line 193

    Fatal error: main() [function.require]: Failed opening required '("./www/includes/inc_newsFunctions.php"); ' (include_path='.:/usr/local/lib/php') in /homez.318/nightfev/www/n63show.php on line 193
    A priori il ne trouve pas le répertoire des includes.

    Pourtant sur la même page j'appelle d'autres includes de façon permanente via le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /**/ require_once("./includes/inc_membresFunctions.php");
    et dans ce cas là ça fonctionne parfaitement.

    J'ai essayé de mettre les includes au format : $include1='("/includes/inc_newsFunctions.php");';
    mais ça ne change rien.

    Quelqu'un peut me venir en aide ?

    Merci par avance,

    Aurélien

  2. #2
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut
    La apparemment, il va sur ./www/includes ce qui n'est pas le répertoire qui fonctionne ./includes comme spécifié dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /**/ require_once("./includes/inc_membresFunctions.php");
    faire cela est ok :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $include = "./includes/inc_membresFunctions.php";
    require_once($include);

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Août 2010
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : Août 2010
    Messages : 216
    Points : 96
    Points
    96
    Par défaut
    J'ai fait la modif mais ça ne marche pas.

    Voici le modifié :
    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
    $link=(isset($_GET['link']))?trim(rawurldecode((string)$_GET['link'])):'';
    switch ($link) {
    	case 'accueil':
    		$include1= "./includes/inc_newsFunctions.php"; 
    		$include2= "./includes/inc_cocktailsFunctions.php";
    		$include3= "./includes/inc_accueilFunctions.php";
    		break;
    	case 'magazine':
    		$include1='' ;
    		$include2='';
    		$include3='';
    		$include4='';
    		break;
    default:
    		$include1='' ;
    		$include2='';
    		$include3='';
    		$include4='';
    }
    require_once ($include1); 
    require_once ($include2); 
    require_once ($include3); 
    require_once ($include4);
    Voici maintenant l'erreur qui s'affiche :

    Fatal error: main() [function.require]: Failed opening required '' (include_path='.:/usr/local/lib/php') in /homez.318/nightfev/www/n63show.php on line 196

    Comment lui indiquer le bon répertoire d'includes ?

    Merci de ton aide,

    Aurélien

  4. #4
    Membre actif Avatar de speedy_g
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 213
    Points : 242
    Points
    242
    Par défaut
    Si le test est sur acceuil, je ne vois pas ou est défini le $include4.

  5. #5
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    En utilisant dirname(__FILE__) cela devrait aller.

    Au passage, nous pourrions utiliser un tableau contenant le(s) fichier(s) à inclure.
    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
    $include=array();
     
    $link=(isset($_GET['link']))?trim(rawurldecode((string)$_GET['link'])):'';
    switch ($link) {
    	case 'accueil':
    		$include=array(
    			'inc_newsFunctions',
    			'inc_cocktailsFunctions',
    			'inc_accueilFunctions'
    		);
    		break;
    	case 'magazine':
    	/*
    		$include=array(
    			'...',
    			'...'
    		);
    	*/
    		break;
    default:
    	/*	$include=array(
    			'...',
    			'...'
    		);
    	*/
    }
     
    foreach($include as $inc)require_once(dirname(__FILE__).'/includes/'.$inc.'.php');

  6. #6
    Membre régulier
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Août 2010
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : Août 2010
    Messages : 216
    Points : 96
    Points
    96
    Par défaut
    Merci ça fonctionne à merveille !!!

    Je me permets d'abuser un peu mais je voudrais savoir comment appeler des fonctions grâce au même système, à savoir une fonction différente par page.

    Voici un exemple de code qui me permet d'appeler une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $newsReq	= getNewsFromId($nbrNewsId );
    $newValue 	= mysql_fetch_array($newsReq);
    Merci beaucoup de me filer un coup de main,

    Aurélien

  7. #7
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Je te renvoie à la documentation officielle.
    PHP supporte le concept de fonctions variables. Cela signifie que si le nom d'une variable est suivi de parenthèses, PHP recherchera une fonction de même nom, et essaiera de l'exécuter...

    Source Les fonctions variables
    Je n'ai jamais utilisé ce concept. D'après la documentation, je m'y prendrais ainsi...
    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
    function Accueil_Fonction(){
    	global $nbrNewsId; // Nous permet d'accéder à la variable globale
     
    	$newsReq	= getNewsFromId($nbrNewsId);
    	$newValue 	= mysql_fetch_array($newsReq);
    }
     
    function Magazine_Fonction() { /* Traitement */ }
    function Fonction_ParDefaut(){ /* Traitement */ }
     
    $func='';	// Aucune fonction programmée par défaut
     
    switch ($link) {
    	case 'accueil':
    		$func='Accueil_Fonction';
    		// $include=array( ... );
    		break;
     
    	case 'magazine':
    		$func='Magazine_Fonction';
    		// $include=array( ... );
    		break;
     
    default:
    		// Pas de fonction ici pour l'exemple ($func reste vide)
    		// $include=array( ... );
    }
     
    if($func!=='')$func();

  8. #8
    Membre régulier
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Août 2010
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : Août 2010
    Messages : 216
    Points : 96
    Points
    96
    Par défaut
    Merci beaucoup. J'ai solutionné mon problème grâce à ton aide.

    Aurélien

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

Discussions similaires

  1. Appel d'une fonction au chargement de la page
    Par paradeofphp dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 01/08/2010, 01h19
  2. Réponses: 3
    Dernier message: 11/10/2008, 13h13
  3. Réponses: 5
    Dernier message: 17/05/2008, 13h15
  4. [MySQL] Appel d'une fonction au nom généré dynamiquement
    Par FrankOVD dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 10/06/2006, 14h36
  5. [FPDF] Erreur après appel d'une fonction avec include
    Par orus8 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/11/2005, 10h49

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