PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 23-08-2009 00:35:58

maria
Membre
Inscription : 23-08-2009
Messages : 9

include / include($pageOK[$_GET['page']])

bonjour, (je suis débutant en php)

j'ai lu l'article : http://www.phpdebutant.org/article68.php

________________________________________________________________________________________________________
  // On définit le tableau contenant les pages autorisées
  // ----------------------------------------------------
  $pageOK = array('news' => 'news.php',
                  'accueil' => 'accueil.php');

  // On teste que le paramètre d'url existe et qu'il est bien autorisé
  // -----------------------------------------------------------------
  if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
    include($pageOK[$_GET['page']]);   // Nous appelons le contenu central de la page
  } else {
    include('accueil.php');   // Page par défaut quant elle n'existe pas dans le tableau
  }

____________________________________________________________________________________________________________
et ma question :
-d'abord : alors il faut vraiment lister tous les liens possible de tout mon site dans $pageOK ??
et si on travaille avec des variables dans le url ?

comment inclurer des variables dans ce code ? c'est possible ?

mon problème : je ne veux pas afficher tous les NEWS -
alors j'appelle seulment les trois premiers et puis j'ai un lien qui va motrer la suite :

<?php
echo '<a href="index.php?page=news.php?debut='.($debut-3).'&compteur='.($compteur-6).'">retour</a>
<a href="index.php?page=news.php?debut='.($debut+3).'&compteur='.$compteur.'">Suite</a>'
?>

je n'arrive pas à mettre ces liens dans $pageOK.....
comment écrire la première partie ? j'imagine que news.php?debut c'est faux ?? (à cause du .php)
________________________________________________________________________________________________________

  $pageOK = array('news' => 'news.php',

'news.php?debut='.($debut-3).'&compteur='.($compteur-6).''=>'news.php?debut='.($debut-3).'&compteur='.($compteur-6).'',
'news.php?debut='.($debut+3).'&compteur='.($compteur).'' => 'news.php?debut='.($debut+3).'&compteur='.($compteur).'',

                  'accueil' => 'accueil.php');
_______________________________________________________________________________________________________
 

merci beaucoup pour une réponse
maria

Hors ligne

#2 23-08-2009 07:21:13

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : include / include($pageOK[$_GET['page']])

Salut,

Sache d'abord, que lorsque tu fait un include d'un script php, php fait comme un copier/coller du script en lieu et place de l'include.

Donc :
Si tu fait :


echo '<a href="index.php?page=news&debut='.($debut-3).'&compteur='.($compteur-6).'">...

Tu remarquera quelques modifications par rapport à ton code.
tu vas avoir un URL qui donne (par exemple):

index.php?page=news&debut=1&compteur=3

Dans index php le tableau $_GET va donc donner (vérifiable avec print_r($_GET) ) :

Array(page=>news, debut=>1, compteur=>3)

Le test :


if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
 

va être vrai et cela va inclure le script news.php.
Et dans ton script news.php tu peux utiliser les variables $_GET['debut'] et $_GET['compteur'] sans problèmes.

Est-ce plus clair ?


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#3 23-08-2009 09:34:37

maria
Membre
Inscription : 23-08-2009
Messages : 9

Re : include / include($pageOK[$_GET['page']])

salut,

merci beaucoup pour la réponse immédiate !!
c'est génial ! ça marche !!

juste : si je teste avec :<? print_r($_GET['page']);?> il affiche toujours seulment : news et non pas : news&debut=1&compteur=3   - c'est normal ??

et je dois alors VRAIMENT lister dans array(page => page.php)  TOUS mes liens de mon site ??


merci !

c'était ma première question dans votre forum et je suis bien contente !!!

maria

Hors ligne

#4 23-08-2009 10:59:16

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : include / include($pageOK[$_GET['page']])

avec :
<?php print_r($_GET['page']);?>
il affiche news c'est normal.

tu peux de la même façon afficher $_GET['debut'] et $_GET['compteur']
Tu affichera tout en faisant print_r($_GET); (tout court).

J'ai l'impression que tu n'as pas bien saisie le passage de variable en get...

index.php?page=news&debut=1&compteur=3 se décompose comme suit :
index.php avec page = news et debut = 1 et compteur = 3.

Tu ne dois pas lister tous les liens de ton site mais seulement les pages à inclure.


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#5 24-08-2009 18:33:59

maria
Membre
Inscription : 23-08-2009
Messages : 9

Re : include / include($pageOK[$_GET['page']])

ahh ok ! maintenant j'ai compris ! merci !!

- j'aurais encore une question : j'ai une page : functions.php et je l'inclure dans la page index.php, tout en haut :

<?php
include ("php/functions.php");
?>

je N'ai PAS définit cette page dans le array('news => news.php', .....) mais ça fonctionne .

c'est correct comme ça, non ?


merci encore une fois !
maria

Hors ligne

#6 24-08-2009 18:51:54

mcAllan
Mowdérateur
Lieu : Châteaurenard en Provence
Inscription : 08-05-2009
Messages : 269

Re : include / include($pageOK[$_GET['page']])

Tu ne dois définir dans l'array que les pages à inclure venant de l'URL (celles que tu récupère par $_GET) ceci pour contrôler la validité de la page à inclure.
php/functions.php n'as pas à être contrôlé...


Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop

Hors ligne

#7 03-09-2009 16:02:41

george
Membre
Inscription : 03-09-2009
Messages : 12

Re : include / include($pageOK[$_GET['page']])

bonjour, (je suis débutant en php) et je crois avoir bien compris le passage de variable en get. Lorsqu'il s'agit de page fixe  le nom de la variable est défini à la création et il est possible de la mémoriser dans l'array. Mais lorsqu'il s'agit de pages qui seront créées selon le besoin comment utiliser le get sans mémoriser la nouvelle variable dans l'array.
j'ai appliqué le script suivant qui fonctionne mais suis je dans la bonne démarche.

$array  = array_push_assoc($pageOK, $_GET['page'], 'page_Actualite/'. $_GET['page'].'.htm');
function array_push_assoc($array , $key, $value){
$array[$key] = $value;
return $array ;
}
et un   elseif ( (isset($_GET['page'])) && (isset($array[$_GET['page']])) ) {
    include($array[$_GET['page']]);   // on appelle le contenu central de la page

Merci de vos conseils en espérant avoir été clair.

Hors ligne

Pied de page des forums