Récupérer l’id de la page courante ?

Eléphant du PHP | 81 Messages

02 févr. 2007, 12:52

Bonjour a tous !

Dans une administration j’affiche des titres d’articles pour permette en cliquant sur le titre de l’éditer. J’en affiche 10 par page, j'ai donc une fonction qui me permet d'afficher mes titres sur plusieurs pages.

Mon souci c’est que si je suis en page 2 et que j’édite mon article et que je clique sur envoyer, je reviens sur la page 1 alors que je voudrais revenir sur la page courante ou est l’article, ici en page 2.

En fait je sais comment faire :
Mon code qui me permet de retourner à ma page où j’affiche mes titres d’article :
admin.php?page=rubrique&debut= $page_active
Mon problème c’est que je n’arrive pas à récupère le « $page_active » car celui-ci est dans une fonction que j’include dans ma page pour afficher les titres d’article.
Si je fais un echo $page_active ; dans la fonction, il me retourne bien le numéro de la page courante. Mais si je fais un echo $page_active ; dans la page ou je fais l’include il me renvoie NULL.

Quelle est la solution pour récupérer ce numéro de page active ??

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 févr. 2007, 12:58

Tu as plusieurs façon de faire... tu peux, dans le lien qui te permet d'éditer ton article, ajouter une info concernant la page à laquelle il se trouve. Tu la glisses ensuite dans ton formulaire, et lorsque tu fais la redirection après édition tu utilises cette valeur pour revenir sur la bonne page.

Tu peux également la mettre en session et ainsi la conserver tout au long de la modification. Il te suffirait alors d'écraser le valeur en session chaque fois que l'internaute change de page...

On peut aussi envisager que lorsque tu modifies ton article et que tu reviens vers la liste, tu lances une requête pour compter le nombre d'article et la position de celui-ci dans la liste, afin de déterminer automatiquement la page à ouvrir...

y a le choix :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 81 Messages

02 févr. 2007, 13:07

Oui mais mon souci c'est que je n'arrive pas à récupèrer la valeur de $page_active.
Si je fais un echo $page_active ; dans la fonction, il me retourne bien le numéro de la page courante. Mais si je fais un echo $page_active ; dans la page ou je fais l’include il me renvoie NULL.

Du coup je ne peux pas la mettre en session !!!

Est ce du au fait que $page_active soit dans une fonction ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 févr. 2007, 13:22

Ah ben vi :)

En fait, si tu déclares une variable dans une fonction, sa portée est limitée à la fonction. C'est à dire qu'elle est innaccessible de "dehors". Pour qu'une variable ait une portée globale, il faut le spécifier explicitement avec l'instruction global.
$var1 = 0; 
$var2 = 0; 

function incremente() { 
  global $var1; // fait référence au $var1 externe 
  var $var2; // sans global est considéré comme une variable interne indépendante 
  $var1++; 
  $var2++; 
} 

incremente(); 
echo $var1; // affiche "1" 
echo $var2; // affiche "0", car c'est uniquement le $var2 de la fonction qui a été modifié 
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 81 Messages

02 févr. 2007, 13:31

Merci Ryle,
tu as solutionné à mon problème et en plus tu viens de me faire comprendre l'instruction global.

merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 févr. 2007, 13:36

Y a pas de quoi ! :)

(250 euros seront débités de votre compte en banque... ;))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...