PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Déplacement entre page en mode session
Déplacement entre page en mode session
Débuté par Christophe Malchamp, 19 fév. 2021 10:58 - 6 réponses
Posté le 19 février 2021 - 10:58
Bonjour,

Je crée mon premier site webdev... donc j'ai des "bêtes questions"

J'ai choisi de faire le mode session.

Ma première page (page1) est une page connexion et quand c'est ok en code serveur, j'ouvre ma page 2 avec la fonction Ouvre(Page2)

Depuis ma page 2, j'ouvre une autre page 3 (avec Ouvre(Page3) où j'ai un tableau de données mais dès que je fais tableajoute dans une fonction serveur appelé depuis la déclaration globale de la page (serveur).... il revient à la page 1
Je ne sais pas pourquoi. (Je pense qu'il veut que je ferme la page 2)

J'ai remplacé Ouvre(Page3) par PageUtilise(Page3) ... et là cela fonctionne ..
mais si je reviens sur ma page précédente (Page2) par les fonctions du navigateur et puis repousse sur ce même bouton PageUtilise(Page3) : de nouveau un message d'erreur car il me dit que le contexte a pu être fermé par la fonction PageUtilise.


Au final.... j'ai l'impression que je fais mal les choses...

Comment dois je faire pour passer de page en page....
sachant que mes pages utilisent des données...

Quelles sont mes erreurs ?

Merci de vos réponses
Posté le 19 février 2021 - 17:57
Bonjour,

Je crée mon premier site webdev... donc j'ai des "bêtes questions"

J'ai choisi de faire le mode session.

Ma première page (page1) est une page connexion et quand c'est ok en code
serveur, j'ouvre ma page 2 avec la fonction Ouvre(Page2)

Depuis ma page 2, j'ouvre une autre page 3 (avec Ouvre(Page3) où j'ai un
tableau de données mais dès que je fais tableajoute dans une fonction
serveur appelé depuis la déclaration globale de la page (serveur).... il
revient à la page 1
Je ne sais pas pourquoi. (Je pense qu'il veut que je ferme la page 2)

J'ai remplacé Ouvre(Page3) par PageUtilise(Page3) ... et là cela
fonctionne .. mais si je reviens sur ma page précédente (Page2) par les
fonctions du navigateur et puis repousse sur ce même bouton
PageUtilise(Page3) : de nouveau un message d'erreur car il me dit que le
contexte a pu être fermé par la fonction PageUtilise.


Au final.... j'ai l'impression que je fais mal les choses...

Comment dois je faire pour passer de page en page.... sachant que mes pages
utilisent des données...

Quelles sont mes erreurs ?

Merci de vos réponses


Bonjour,
même si je suppose que ouvre est une compatibilité Windev, il vaut
mieux utiliser des pageAffiche, voir des pageActualise, eventuellement
des ContexteOuvre ...
On est plus dans l'esprit et à même de comprendre les contraintes du
web
et de fait tu agis comme si tu étais dans Windev.
Contrairement à ce que l'on veut nous faire croire sur les belles
brochures, ce n'est pas du tout la même chose.
A chaque appel de page en webdev, on ne revient pas à la page
précédente naturellement quand on ferme la dite page.

Donc n'utilise pas les instructions Windev déjà.

--
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Posté le 23 février 2021 - 08:08
Merci...


"Quand j'utilise le retour arrière du navigateur..."
sait on le bloquer ?
ou que ce passe t il dans le code ? quel code est à nouveau exécuté ?

Le contexte a disparu ? il faut lancer un traitement spécialement
Posté le 23 février 2021 - 11:33
Merci...


"Quand j'utilise le retour arrière du navigateur..." sait on le bloquer ?
ou que ce passe t il dans le code ? quel code est à nouveau exécuté ?

Le contexte a disparu ? il faut lancer un traitement spécialement


non on ne sait pas vraiment empêcher le retour du navigateur
et c'est souvent un problème
La page repart alors à son init
Non le contexte n'aura pas disparu si tu es en mode sesssion
Même si l'on coche "empêcher l'utilisation du bouton précédent"

Voilà c'est tout ça sur lequel on n'a pas de questions à se poser en
windev et qui complexifie un dev en webdev (en web en general)

Moi je met un rapport de 4 entre un dev wd et un dev Wb
il faut 4 fois plus de temps pour developper une fenetre en wb vs une
page en wd.

--
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 23 février 2021 - 14:53
Hello,

Pour la touche retour, il faut utiliser le mécanisme de synchronisation:


En gros, sur une page qui prend un ID en paramètre par exemple, dans le code d'init de ta page tu va stocker cette valeur dans un champ de saisie caché par exemple.

Ensuite dans ton code de synchro tu vas rappeler ta fonction ini en lui passant l'ID qui est stocké dans le champ caché, ca va permettre de recharger "proprement" ta page avec l'ID local.

Le gros danger, c'est d'avoir un contexte diffèrent, qui a changé, et de revenir sur une page qui "pense" être dans un contexte diffèrent... tu risques d'écraser les mauvaises données en faisant un PageVersfichier() par exemple.



Posté le 10 mars 2021 - 09:11
Bonjour,

Je vous remercie pour la réponse.... l'idée me paraissait bonne
malheureusement j'ai l'impression que le retour arrière il ne passe par le code "synchronisation "serveur""
ou peut être que je dois faire qq chose en + qui l'active ...

J'ai l'impression qu'un retour arrière revient brutalement sur la page...

Comment intercepter avant d'avoir le message Requête invalide : le contexte de page 'PAGE_X' est inconnu.

Merci
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 10 mars 2021 - 12:29
Il me semble, à vérifier, mais ce code n'est exécuté que lorsque le navigateur va dialoguer avec le serveur.
Le problème de la touche retour, c'est qu'il s'agit d'une action purement liée et cloisonnée au sein du navigateur, a aucun moment le serveur n'est averti de ça.

Lors te ta prochaine action (clic bouton par exemple) après touche retour, le serveur va refaire la synchro.