Page 1 sur 1

Multiple include au même endroits

Posté : 30 avr. 2008, 11:04
par albius
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,

Posté : 30 avr. 2008, 12:37
par katagoto
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...

re:

Posté : 30 avr. 2008, 15:59
par albius
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...

Posté : 30 avr. 2008, 17:43
par katagoto
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...

Posté : 30 avr. 2008, 18:08
par AB
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");
	
				}

re:

Posté : 05 mai 2008, 14:23
par albius
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.

Posté : 05 mai 2008, 16:11
par nicolas
Un tableau associatif serait à mon avis une solution bien plus facile à faire évoluer que le switch.

Posté : 05 mai 2008, 18:28
par AB
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-)

Posté : 05 mai 2008, 21:35
par nicolas
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!!

Posté : 05 mai 2008, 23:10
par Calimero
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']);
}