PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → passage de variable du navigateur au serveur
passage de variable du navigateur au serveur
Débuté par tamerlan07, 23 oct. 2013 20:59 - 11 réponses
Posté le 23 octobre 2013 - 20:59
Bonsoir,

N'arrivant pas à afficher la valeur d'une variable globale dans le code d'un bouton cliquable coté serveur pour l'utiliser comme paramètre lors que j'ouvre une nouvelle page , j'ai pensé à un transfert de variable depuis le navigateur mais je n'arrive pas

Ce que je veux faire c'est récupérer le nom d'un utilisateur et lorsqu'il clique sur une image cliquable , je puisse récupérer son nom pour pouvoir le manipuler dans une autre page

auriez vous des solutions à mon problème ?

merci

Bien à vous
Posté le 24 octobre 2013 - 11:35
Bonjour,

Essayez de passer par une variable globale au projet ou si cella ne fonctionne pas, passez par un champ de saisie invisible dans la page, que vous le remplissez au préalable ( à chaque affichage de la page ou autre traitement) . Ensuite vous passez en paramètre de la page suivante le contenu du champ du saisie.

Cdlt
Posté le 24 octobre 2013 - 13:48
Bonjour Victor

Merci bien pour la réponse mais justement la variable globale au projet je l'ai utilisé mais dans le code serveur cette variable que je déclare ainsi

ResNom est une chaîne

Ensuite quand l’utilisateur via à un champ de saisie encode son nom , je fais ResNom = SAI_NOM , le problème c'est que du coté serveur ResNom est vide

Or j'aimerai bien mettre un message de Bienvenue + Nom sur toutes les pages et sachant que pour passer de page en page en SITE php via le PageAffiche, on doit le faire coté serveur , je ne vois pas comment

Pour ce qui est de la deuxieme solution , j'avais essayé auparavant mais malheureusement le champs de saisie est constamment vide aussi , à moins que je fasse mal la chose

pourriez vous m'expliquez la chose par étape svp , je suis vraiment débutant


Merci encore
Posté le 24 octobre 2013 - 14:51
Bonjour Georges

voila comment ca fonctionne:
- le navigateur et le serveur sont sur deux ordi séparés
- ils ne se parlent pas souvent
- quand le coté serveur envoit une page au navigateur, les variables
gloables et leur valeurs sont envoyées aussi
- par contre, quand le navigateur "parle" au serveur (et la je parle
d'un clic sur un bouton de type SUBMIT), il envoit au serveur le contenu
des CHAMPS, pas des variables (c'est une norme web)...

Pour compliquer la chose, il y a possibilité d'utiliser ajax, mais si tu
es vraiment débutant, ne compliquons pas

Donc, dans ton cas, au lieu de mettre la valeur dans une variable
globale du coté navigateur, tu la mets dans un CHAMPS (invisible) puis,
quand l'utilisateur CLIQUE sur un bouton (que tu as paramétré comme
étant de type submit) le contenu de ce champ arrive au serveur ou tu
peux, dans ton code, mettre la valeur dans la variable globale

Bienvenue dans le monde merveilleux du développement web :-)

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Plus d'information sur http://fabriceharari.com


On 10/24/2013 5:48 AM, Gorges Henry wrote:
Bonjour Victor

Merci bien pour la réponse mais justement la variable globale au projet
je l'ai utilisé mais dans le code serveur cette variable que je déclare
ainsi

ResNom est une chaîne

Ensuite quand l’utilisateur via à un champ de saisie encode son nom , je
fais ResNom = SAI_NOM , le problème c'est que du coté serveur ResNom est
vide

Or j'aimerai bien mettre un message de Bienvenue + Nom sur toutes les
pages et sachant que pour passer de page en page en SITE php via le
PageAffiche, on doit le faire coté serveur , je ne vois pas comment

Pour ce qui est de la deuxieme solution , j'avais essayé auparavant mais
malheureusement le champs de saisie est constamment vide aussi , à moins
que je fasse mal la chose

pourriez vous m'expliquez la chose par étape svp , je suis vraiment
débutant


Merci encore
Membre enregistré
1 603 messages
Posté le 24 octobre 2013 - 14:51
Il faut bien spécifier dans le code d'ini du projet:
GLOBAL
ResNom est une chaine

puis exécuter ResNom = SAI_NOM en code serveur

Cordialement
François
Posté le 24 octobre 2013 - 18:01
@ François

Merci pour la réponse

mais voilà le message que j'obtiens quand même : "les modifications effectuées sur ces variables globales en code navigateur ne sont pas reportées sur le serveur."

@Fabrice


Merci pour l'accueil :)
Alors j'ai fait exactement ce que tu m'as dit mais c'est toujours vide , franchement j'ai du mal , je ne comprends pas...
Je te montre mon code pour que tu puisses voir ce que j'ai fait

1 ETAPE

Une fenêtre de dialogue s'ouvre pour que l'utilisateur puisse encoder son login et son mdp , ensuite via AjaxExecute , je récupérer , son prénom dans la base de données
voila le code dans la partie navigateur du onclick du bouton connexion

ResLogin est une chaîne = AJAXExécute(VerifierLogin,SAI_username,SAI_password);

SELON sResLogin
CAS "ok" : Info("Connexion réussie");
CelluleFermeDialogue(CELL_Boite_Connexion);
MAP_SansNom1..Visible = Faux
MAP_Deco..Visible= Vrai
SAI_ChampInvisible= AJAXExécute(RecupPrenom,SAI_username,SAI_password);
LIB_Bienvenue..Visible=Vrai
LIB_Bienvenue = "Bienvenue " + SAI_ChampInvisible
CELL_Evaluation1..Visible=Vrai
ResAsupprimer est une chaîne = AJAXExécute(Asupprimer,SAI_username);
i est un entier
i=ListeCherche(COMBO_Infirmiers,ResAsupprimer);
ListeSupprime(COMBO_Infirmiers,i);
RETOUR
AUTRE CAS
Info("Connexion impossible,verifiez vos données");
RETOUR
FIN

Dans clic du bouton coté serveur PHP

ResPrenom=SAI_ChampInvisible


2 ETAPE

Dans mon image clic , coté serveur PHP , j'aimerai voir ce qu'il y a dans ResPrenom via Info(gsResPrenom) , et c'est là que ça cloche , c'est vide


En attendant vivement ta réponse


Merci
Posté le 24 octobre 2013 - 18:07
Pour info j'ai essayé d'afficher directement le champ invisible mais là toujours je n'ai aucune valeur dans ma box info
Posté le 25 octobre 2013 - 09:56
Bonjour,

Alors, sur mon site php je fais le suivant:
Etape 1:
code du projet ( pas de la page), dans l'Initialisation d'une session PHP je déclare une variable globale :

gsNomClient est une chaine


Etape 2:
dans le bouton click "connexion" de ton formulaire de connexion.
dans le code NAVIGATEUR:
// Contrôle le login et mot de passe
SELON Val(AJAXExécute(bCheckConection, SAI_Login, SAI_Mot_de_passe))
CAS 0
// Fail login
Erreur("Le login saisi est incorrect","Veuillez le vérifier")
RepriseSaisie(SAI_Login)

// Le mot de passe saisi est incorrect
CAS -1
// fail mdp
Erreur("Le mot de passe saisi est incorrect","Veuillez le vérifier")
SAI_Mot_de_passe = ""
RepriseSaisie(SAI_Mot_de_passe)

// Le login et le mot de passe sont corrects
AUTRE CAS
// C'est OK
FIN

le code de la procédure locale bCheckConection( note: il faut activer ajax )

PROCEDURE bCheckConection(sLogin, sMotPasse)

HLitRecherchePremier(Client, Login, sLogin)
SI PAS HTrouve(Client) ALORS
// le login n'existe pas
RENVOYER 0
FIN
// Le client a été trouvé
// verification du mdp
SI Client.MotDePasse = sMotPasse ALORS
//le login et le mdp sont ok
RENVOYER 1
SINON
// fail mdp
RENVOYER -1
FIN


dans le code SERVEUR du bouton connexion:

HLitRecherchePremier(Client,Login,SAI_Login)
//On met à jour la variable globale
SI Htrouve(Client) ALORS
gSNomClient = Client.NomClient
FIN
//On affecte à la lib la valeur de la var globale
LIB_nom_client="Bienvenue "+ gSNomClient
//on affiche la page suivante
PageAffiche(PAGE_suivante)

ETAPE 3:
Dans le code serveur de ton model du page, dans la partie "A chaque Affichage de PAGEMOD_MAPAGE" tu rajoute bien évidement l'affectation à la lib (si t'as pas de model de page tu copie colle dans chaque page la ligne suivante. C'est pratique le model de page, hein ;) )

LIB_nom_client = "Bienvenue "+ gSNomClient


Je viens de faire la manip et pour moi cella fonctionne.


Comme les gars l'ont dit, ton bouton de connexion doit etre de type submit pour envoyer bien les valeurs des tes variables , champs au serv, pour qu'il soit au courant.

Cdlt
Posté le 25 octobre 2013 - 14:31
@Victor j'ai fait ce que vous m'avez dit mais là j'ai un autre problème qui survient c'est que je ne peux pas exécuter le code du bouton coté serveur , il ne le fait que coté navigateur , c'est étrange parce que j'ai bien précisé dans l'edit de l'action que je voulais que ce soit le code du coté serveur qui devait s’exécuter lors du clik , je ne comprends pas déjà pourquoi il arrive à l’exécuter coté navigateur ?

merci
Posté le 25 octobre 2013 - 14:38
En fait il n'arrive à exécuter le code du clik coté serveur seulement si il n y a rien coté navigateur
Posté le 25 octobre 2013 - 14:49
Bonjour

désolé, mais tu viens de dégainer ma kryptonite: PHP...

je n'utilise absolument pas ce mode (et je ne veux pas l'utiliser)...
aucun avantage, tous les inconvénients...

Bon courage


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Plus d'information sur http://fabriceharari.com


On 10/24/2013 10:01 AM, Gorges Henry wrote:
@ François

Merci pour la réponse

mais voilà le message que j'obtiens quand même : "les modifications
effectuées sur ces variables globales en code navigateur ne sont pas
reportées sur le serveur."

@Fabrice


Merci pour l'accueil :)
Alors j'ai fait exactement ce que tu m'as dit mais c'est toujours vide ,
franchement j'ai du mal , je ne comprends pas...
Je te montre mon code pour que tu puisses voir ce que j'ai fait

1 ETAPE

Une fenêtre de dialogue s'ouvre pour que l'utilisateur puisse encoder
son login et son mdp , ensuite via AjaxExecute , je récupérer , son
prénom dans la base de données
voila le code dans la partie navigateur du onclick du bouton connexion

ResLogin est une chaîne =
AJAXExécute(VerifierLogin,SAI_username,SAI_password);

SELON sResLogin
CAS "ok" : Info("Connexion réussie");
CelluleFermeDialogue(CELL_Boite_Connexion);
MAP_SansNom1..Visible = Faux
MAP_Deco..Visible= Vrai
SAI_ChampInvisible=
AJAXExécute(RecupPrenom,SAI_username,SAI_password);
LIB_Bienvenue..Visible=Vrai LIB_Bienvenue = "Bienvenue
" + SAI_ChampInvisible
CELL_Evaluation1..Visible=Vrai
ResAsupprimer est une chaîne =
AJAXExécute(Asupprimer,SAI_username);
i est un entier
i=ListeCherche(COMBO_Infirmiers,ResAsupprimer);
ListeSupprime(COMBO_Infirmiers,i);
RETOUR
AUTRE CAS
Info("Connexion impossible,verifiez vos données");
RETOUR
FIN

Dans clic du bouton coté serveur PHP

ResPrenom=SAI_ChampInvisible

2 ETAPE

Dans mon image clic , coté serveur PHP , j'aimerai voir ce qu'il y a
dans ResPrenom via Info(gsResPrenom) , et c'est là que ça cloche , c'est
vide


En attendant vivement ta réponse


Merci
Posté le 25 octobre 2013 - 15:36
Finalement ça fonctionne , c'était une erreur dans mon code navigateur qui empechait le code serveur de s'exeuter , merci pour tout Victor :)

@Fabrice

Pas grave , merci quand même