Multiple include au même endroits

Eléphant du PHP | 226 Messages

30 avr. 2008, 11:04

Bonjour,

J'expose la situation : dans ma page, j'ai un menu contenant plusieurs liens. Juste à côté, j'ai un espace destiné à afficher les fichiers renvoyés par les liens, via une inclusion. Le fait d'effectuer une inclusion pour un fichier ne me pose pas de soucis en particulier, mais je me demande comment faire lorsqu'il y en a plusieurs...
merci,
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Mammouth du PHP | 1668 Messages

30 avr. 2008, 12:37

Bah comme ça :)
foreach ($array_liens as $value)  
{ 
if(!@include_once($value))
{
die("Impossible d'inclure <big>'.$value.'</big>');
}
} 
Voilà, en plus avec la gestion des erreurs, c'est la classe :)

++

PS : Je te conseillerais un switch pour verifier que les fichiers sont incluables...
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Eléphant du PHP | 226 Messages

30 avr. 2008, 15:59

Merci pour la réponse, mais je ne la comprends pas...
Où dois-je placer ce bout de code ? Que dois-je mettre exactement dans '$array_liens' (les liens je suppose mais sous quelle forme ?)
merci,
ps : J'avais pensé à envoyer via chaque lien une variable à un fichier contenu dans le div principal (div contenu) Ce fichier filtrerait chaque variable et en fonction de celle-ci, afficherait le fichier idoine avec l'inclusion...
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Mammouth du PHP | 1668 Messages

30 avr. 2008, 17:43

tu dois les mettre sous forme relative :
<?php
$array_liens=array('partenaires.php', imrpoviser.php', 'membres.php');
?>
Tu y met toutes les pages à inclure, au début de ta page, par contre je comprend rien à ton PS...
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
AB
ViPHP | 5818 Messages

30 avr. 2008, 18:08

Pour ton PS si j'ai bien compris, tu peux envoyer une variable en fonction du contenu à inclure. Et pour ne pas faire de faille de sécurité il vaut mieux associer la valeur de la variable aux fichiers à inclure.

Par exemple pour afficher le code de la page 1 tu peux envoyer une variable GET dans ton lien en faisant par exemple

Code : Tout sélectionner

<a href = "index.php?page=1">page 1</a> <a href = "index.php?page=2">page 2</a> etc.
Ensuite pour récupérer ces valeur et inclure le fichier correspondant
$page = (isset($_GET['page']) && is_numeric($_GET['page']))? intval($_GET['page']) : 0 ;

switch ($page) {
				case "1" : include("codepage1.php"); break;
				case "2" : include("codepage2.php"); break;
				case "3" : include("codepage3.php"); break;
				case "4" : include("codepage4.php"); break;
                             //etc..
                  default : include("codepage_index.php");
	
				}

Eléphant du PHP | 226 Messages

05 mai 2008, 14:23

Tu as très bien compris AB! C'est exactement ce à quoi je pensais... (qui plus est, tu m'as appris du vocabulaire) merci pour ta proposition katagoto.
«Le matin, quand il t’en coûte de te réveiller, que cette pensée te soit présente: c’est pour faire œuvre d’homme que je m’éveille.»
Marc Aurèle.

Eléphant du PHP | 353 Messages

05 mai 2008, 16:11

Un tableau associatif serait à mon avis une solution bien plus facile à faire évoluer que le switch.

ViPHP
AB
ViPHP | 5818 Messages

05 mai 2008, 18:28

Un tableau associatif serait à mon avis une solution bien plus facile à faire évoluer que le switch.
Pas faux "Nicolas" :wink: Et comme ce post s'adresse avant tout aux débutants tu pourrais peut-être donner trois à quatre lignes de code en exemple 8-)

Eléphant du PHP | 353 Messages

05 mai 2008, 21:35

Un tableau associatif serait à mon avis une solution bien plus facile à faire évoluer que le switch.
Pas faux "Nicolas" :wink: Et comme ce post s'adresse avant tout aux débutants tu pourrais peut-être donner trois à quatre lignes de code en exemple 8-)
Mort de rire. Bien joué mais c'est toi qui a donné le code pas beau. Je te donne une chance de te rattraper!!

ViPHP
ViPHP | 2287 Messages

05 mai 2008, 23:10

Mort de rire. Bien joué mais c'est toi qui a donné le code pas beau. Je te donne une chance de te rattraper!!
Pas trop d'accord là dessus. Certes, passer à une structure de type tableau associatif est un chouilla plus simple à faire évoluer, mais aussi un chouilla moins élégant ;-)

Le code fourni par AB est académique, facile à lire et 100% efficace. Et tant qu'on flirte avec la dizaine de pages il n'y a pas de problème d'évolution à prévoir.

L'idée était donc de remplacer ceci :
switch ($page) { 
                case "1" : include("codepage1.php"); break; 
                case "2" : include("codepage2.php"); break; 
                case "3" : include("codepage3.php"); break; 
                case "4" : include("codepage4.php"); break; 
                             //etc.. 
                  default : include("codepage_index.php"); 
     
                }
par ceci :
$page_fichier=array(
  // On stocke les correspondances sous forme de paires clé => valeur
  // Comme cela il est plus facile d'envisager de les stocker ailleurs
  // si la liste s'allonge un peu trop : Base de données, fichier...
  1 => 'codepage1.php',
  2 => 'codepage2.php',
  3 => 'codepage3.php',
  4 => 'codepage4.php',
  5 => 'codepage5.php',
  // Et ainsi de suite...
  'erreur' => 'erreur.php',
);

// On retrouve nos deux cas :
if(isset($page_fichier[$page])){ 
     // Si la variable existe dans notre tableau
     include($page_fichier[$page]);
} else { 
     // Sinon, on affiche une erreur
     include($page_fichier['erreur']);
}
if(!@work()){ Nespresso(); } else { what(); }
______________________________