Multiple include au même endroits

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Multiple include au même endroits

par Calimero » 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']);
}

par nicolas » 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!!

par AB » 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-)

par nicolas » 05 mai 2008, 16:11

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

re:

par albius » 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.

par AB » 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");
	
				}

par katagoto » 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...

re:

par albius » 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...

par katagoto » 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...

Multiple include au même endroits

par albius » 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,