[RESOLU] Mémorisation d'une page pour le retour

Eléphant du PHP | 67 Messages

13 déc. 2012, 16:29

Bonjour...

J'ai une page "target" de résultats qui est appelée à partir de différentes pages "source", en passant des variables, bien sûr.
Pour différentes raisons, je ne sais pas utiliser la fonction history.go (-1) et je passe donc l'adresse de la page "source" en variable dans l'URL de la manière suivante :
Je mémorise d'abord la page sur laquelle on se trouve (source) dans une variable :
$listeori = urlencode($_SERVER['REQUEST_URI']) ;

et ensuite je passe la variable dans l'URL :
<a href='target.php?listeretour=$listeori>texte_de_la_page</a>


Pour le retour, j'utilise ceci dans la page 'target':
$lret1 = urldecode($_GET[listeretour]);
$lret = substr($lret1,9);

et ensuite le lien :
<td width="10%" style="cursor: pointer;" onclick="location.href='<? echo $lret ; ?>

... tout ceci fonctionne très bien mais ...
Le retour de la page 'target' vers la page 'source' affiche la page en la rechargeant, et donc elle s'affiche en haut de page.
Comme il s'agit parfois de listes assez longues, il faut chaque fois scroller pour retrouver l'endroit où on était à l'origine.

Ma question :
Y-a-t'il moyen de mémoriser l'emplacement dans la page 'source' avant de la passer en variable à la page 'target' ?
A savoir : la page source est remplie dynamiquement à partir d'une bd MySQL. Il peut y avoir 3 liens (texte_de_la_page dans mon exemple ci-dessus) comme 600 ...
Histoire de compliquer encore un peu la chose, la page 'source' appelle la liste dont je veux mémoriser l'emplacement par un include

Je ne pense pas qu'il y ait une solution simple mais on ne sait jamais ... si quelqu'un a une idée, ou une piste à suivre ...
Un grand merci d'avance

Philippe

Mammouth du PHP | 702 Messages

13 déc. 2012, 16:39

tu peux utiliser cette variable Superglobale
 $_SERVER['HTTP_REFERER'];
qui te ramène directement à l'avant dernière page (la dernière étant celle ou tu te trouve actuellement).

Puis tu dois pouvoir ajouter une ancre pour mémoriser la position que tu peux passer en paramètre dans ton lien après tu récupère l'url passée plus l'ancre et donc tu retourne au même endroit.

La fonction history go-1 est mauvaise car si javascript est désactivé aucun retour possible.

C'est pour supprimer des données je présume ? Si c'est le cas et que tu veux faire cela rapidement sans te prendre la tête avec le retour au même endroit fais le en ajax. sinon tu devras utiliser les ancres.

ViPHP
xTG
ViPHP | 7331 Messages

13 déc. 2012, 16:44

A noter que si c'est l'état de scroll de l'utilisateur dans une grande page le seule moyen est de passer par history.go(-1).
Et encore, c'est un comportement dépendant du navigateur, certains ne te ramènent qu'en début de page.

Mammouth du PHP | 702 Messages

13 déc. 2012, 16:48

complètement d'accord, le mieux je pense que pour rester au même endroit c'est de ne pas en bouger, donc de passer par ajax.

ViPHP
xTG
ViPHP | 7331 Messages

13 déc. 2012, 16:50

complètement d'accord, le mieux je pense que pour rester au même endroit c'est de ne pas en bouger, donc de passer par ajax.
Même avec cela en fait cela n'aboutira pas au comportement voulu.

Imagines une page chargée par Ajax de plusieurs écran de haut. Tu vas aussi scroller.
Mais aucun moyen de faire un retour arrière et de revenir au même endroit du scroll.
Ou peut être que si remarque, on peut bien scroller automatiquement en JS... Mais je sens à plein nez l'usine à gaz pour la chose qui ne sera que très peu remarqué par l'utilisateur.

Eléphant du PHP | 67 Messages

13 déc. 2012, 17:00

Merci pour vos réponses ...

C'est bien ce que je pensais ... ça va devenir une usine à gaz et je ne suis même pas sûr d'obtenir le résultats désiré.

Je pense donc que je vais laisser en l'état.

Encore merci