IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Modifier variable de session dans un onclick


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 41
    Points
    41
    Par défaut Modifier variable de session dans un onclick
    Bonjour.

    Mon probleme est... dans le titre !!
    Je voudrais faire un lien comme ca : <a onclick="<?php $_SESSION['recherche']=$crits ?>">...</a>" pour pouvoir modifier ma variable de session quand on clique sur un lien.

    J'ai besoin que ce changement s'effectue apres le chargement de la page du lien, c'est pourquoi je ne pense pas que du ajax s'impose.
    Je precise que je ne veux pas modifier ma variable au debut de la page php vers laquelle renvoie le lien.

    Pour l'instant quand j'écris ca tel quel il se passe un truc bizarre : ma variable est bien changée mais non pas quand on clique sur le lien mais au chargement de la page où se trouve le lien !!!

    Je ne sais pas quels outils il faut mettre en place pour ca... J'attends vos propositions !


    Merci d'avance.

  2. #2
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Je ne comprends pas pourquoi
    tu veux changer la variable $_SESSION,
    variable qui se trouve sur le serveur,
    entre deux requêtes vers le serveur.

    Mais, comme
    lorsque le client appelle la page sur laquelle se trouve le lien,
    le serveur interprète
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php $_SESSION['recherche']=$crits; ?>
    donc effectue l'affectation (trop tôt ?),
    et n'écrit rien dans la page html qui va être envoyée au client.
    Le lien sera alors :
    ce qui ne sert à rien.

    Et, que tu ne veux pas modifier la variable
    au début de la page php vers laquelle renvoie le lien (trop tard ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="mapage.php?recherche=$crits">...</a>
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (isset($_GET['recherche'])) {
        session_start();
        $_SESSION['recherche']=$_GET['recherche'];
    }
    , AJAX serait peut-être la seule solution.

    Fred

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 41
    Points
    41
    Par défaut Modifier variable de session dans un onclick
    Salut micetf et merci de ta réponse

    Voici un peu plus de détails.

    Cette variable de session $_SESSION["recherche"], comme tu l'auras sans doute compris, sert pour la recherche . J'ai une zone de texte de recherche qui prend pour valeur cette variable. Le "mode recherche" s'effectue en 2 temps :

    1/ on va sur la page de recherche générale pour afficher le début de chaque article (la valeur affichée dans la zone de texte - càd le mot cherché - peut être obtenue avec un $_POST). page : recherche.php

    2/ a partir de cette page de recherche on clique sur un des liens pour voir le detail de l'article. On est donc sur une 2eme page. Le $_POST ne marche plus pour donner a la zone de texte la valeur du mot cherché. Il me faut donc une variable de session : $_SESSION["recherche"]. Exemple de page : page_detail.php

    Là où ca se complique :
    Le lien dont je te parlais tout à l'heure est un lien qui fait parti de mon menu (il y en à une 10aine comme cela). La plupart de ces liens peuvent amener à des pages comme page_detail.php, càd une page que l'on peut afficher lorsqu'on est en "mode recherche" ou comme ici simplement à partir du menu. Si cette page est affichée à partir du "mode recherche", il faut que la valeur de ma zone de texte corresponde au texte cherché. Par contre si cette page est affichée à partir du lien du menu, je veux pouvoir attribuer une valeur par défaut à la zone de texte.
    Voila pourquoi je voulais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a onclick="<?php $_SESSION['recherche']=$crits ?>">...</a>

    En espérant avoir été clair

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 41
    Points
    41
    Par défaut Quelques précisions...
    Pour répondre à "est-ce trop tôt" (de faire l'affectation lors du chargement de la page de recherche):
    Oui car mon menu s'affiche dans chaque page. Donc je peux encore être en "mode recherche" et comme mon menu est appelé, eh bien ma variable de session reprend sa valeur par défaut ($crits est ma valeur par défaut). Cela change donc la valeur de la zone de recherche en affichant un texte par défaut alors qu'il devrait s'afficher le texte cherché
    (Je rappelle que ma zone de recherche prend pour valeur celle de ma variable de session)


    Pour répondre à "est-ce trop tard" (de faire l'affectation directement dans la page du lien) :
    Je t'ai plus ou moins donné la réponse dans mon message juste avant. Non ce n'est pas trop tard c'est même pile le bon moment ! Mais le problème est le suivant : la page du lien sera de la forme page_detail.php. Si on y arrive depuis le "mode recherche", ma variable de session doit prendre une certaine valeur. Si on y arrive depuis le menu, ma variable de session doit prendre une autre valeur

    D'où mon problème...

    En espérant, une fois encore, avoir été clair. (??)

  5. #5
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Utiliser la méthode GET pour transmettre le mot cherché,
    ne résoudrait-il pas ton problème ?
    Fred

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 41
    Points
    41
    Par défaut variable de type GET
    Mais bon sang mais c'est bien sûr !! Mais pourquoi je n'y ai pas pensé avant !!

    Je vais voir de ce côté la et je te tiens au courant. En attendant on peut mettre [RESOLU]

    Et moi qui pensait que ca allait être compliqué !!


    Merci beaucoup Fred.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 41
    Points
    41
    Par défaut Ajout d'un parametre dans un lien
    Salut !

    J'essaie de faire comme tu m'as dis, c'est-à-dire de passer un paramètre dans l'url pour le récupérer avec un $_GET.

    Voici ce que j'ai changé dans mes liens sur ma page recherche.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AVANT MODIF : href='activities.php?spk=".$_SESSION['lang']."&amp;wid=".$_SESSION['width']."'
    APRES MODIF : href='activities.php?spk=".$_SESSION['lang']."&amp;wid=".$_SESSION['width']."&amp;s=".$_SESSION['recherche']."'
    J'essaie de créer le parametre "s" mais le lien ne marche plus apres modification, je ne peux plus y accéder (avant ca marchait tres bien). Du coup je me demande s'il y a quelque chose de spécial à faire pour créer un paramètre.

    Merci d'avance

  8. #8
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Quelque chose m'échappe :
    A quoi te sert de passer les valeurs de $_SESSION dans tes liens ?

    Mon idée était que dans tes liens "menu",
    tu rajoutes un paramètre ('s' par exemple)
    dont la valeur est la valeur par défaut (par ex : detail.php?s=$crits)
    que tu souhaites afficher dans la zone de texte.

    Ceci fait,
    dans ta page détail,
    tu testes si $_GET['s'] existe,
    si oui c'est que tu arrives ici par un lien "menu",
    tu ne t'occupes donc pas de la variable de session
    et tu utilises la valeur de GET['s'].
    si non c'est que tu arrives de ta page de recherche,
    tu dois utiliser la valeur de $_SESSION['recherche'].

    Fred

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    C'est juste une question de point de vue
    Toi tu veux afficher en paramètre le mot par défaut et moi le mot choisi. On ne fait pas tout à fait la même chose mais ca revient au même, non?

    Pourquoi ta méthode marcherait et pas la mienne ??

  10. #10
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Toi tu veux afficher en paramètre le mot par défaut ...
    Parce que c'est ce que j'avais compris :
    Si cette page est affichée à partir du "mode recherche",
    il faut que la valeur de ma zone de texte corresponde au texte cherché.
    Pour moi, valeur contenue dans $_SESSION['recherche'].

    Par contre si cette page est affichée à partir du lien du menu,
    je veux pouvoir attribuer une valeur par défaut à la zone de texte.
    Pour moi, valeur contenue dans $_GET['s'], donc à transmettre dans le lien.

    Mais je n'ai peut-être pas compris ton problème,
    bien que j'essaie d'adopter le même point de vue que toi
    et ne cherche surtout pas à t'imposer ma méthode .

    Quant à tes liens qui ne marchent plus,
    à priori,
    c'est une de tes fonctions javascript
    qui écrase tes liens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a class="liens" href='activities.php?spk=en&amp;wid=1024'>[...]</a>
    pour les remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span class="couleur_rech"></span>[...]
    .

    Fred

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    Ok c'est pas grave chacun sa méthode. La variable php $crits est la valeur par defaut de ma zone de texte. Donc moi dans le $_GET je voulais recuperer le mot cherché s'il y en a un pour l'afficher dans ma zone de texte. S'il n'y en a pas j'affiche $crits (la valeur par defaut) qui est inclus dans chaque fichier.
    L'inverse ne va pas en fait puisque ce serait passer en paramétre une valeur que je connais déjà : la valeur par défaut ($crits prends toujours la même valeur).

    Alors la faut que tu m'explique un truc : comment tu sais que j'ai ca dans mon code :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <span class="couleur_rech"></span>[...]

    ?? Il ne me semble pas t'avoir parlé de ca ni t'avoir donné l'url ! Non pas que ce soit un secret mais j'ai beau relire la conversation je vois pas à quel moment je t'en ai parlé !!


    Effectivement tu as raison mon problème vient d'une fonction javascript qui colore le mot cherché : à chaque fois qui'il le rencontre il l'insère dans la balise
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <span class="couleur_rech"></span>[...]
    .
    Ce qui est bizarre c'est que mon code est censé ne pas prendre en compte le mot lorsqu'il est entre des balises html, ce qui est le cas là puisqu'il y a un lien.
    Ma fonction javascript contient cette regex :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    var regex = new RegExp("<[^>]+?("+searchTerms[i]+").*?>|("+searchTerms[i]+")","ig");
    Je ne sais pas si tu t'y connais, mais c'est là qu'est le problème c'est sur (searchTerms[i] est le mot cherché).
    Ce qui est bizarre c'est que j'ai eu des problèmes sur cette regex donc j'ai demandé sur un forum où on m'a donné cette solution et je pensais qu'elle marchait...
    Je vais retourner sur le forum poser la questiion... en attendant si tu t'y connais et si tu trouves la solution...

    Ce qui est bizarre c'est qu equand j'affiche le code source de la page et que je regarde le lien défectueux il ne m'affiche pas de problème !
    Je te donne l'url pour que tu puisses regarder...même si apparemment tu l'avais déjà
    http://www.make-development-inclusiv...raitsearch.php

    Tapes le mot handicap dans la zone de texte. Le 1er lien (les points de suspensions entre cochet) marche car je n'ai pas rajouté de parametre mais apres plus rien ne marche !! Et si tu regardes le code source...

    Vive php/html/javascript/css !!

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 41
    Points
    41
    Par défaut Remplacement par la fonction javascript
    Je viens de m'apercevoir d'un truc : dans le code source on a pas les modifications faites par le script javascript ! C'est normal ??
    C'est pour ca que je ne vois pas l'ajout de la balise
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <span class="couleur_rech">[...]</span>
    . Et on ne voit pas non plus l'ajout de cette balise lorsque le mot est vraiment surligné ! Ce qui confirme bien ce que je te disais : dans le code source on ne voit pas les modifications apportées par la fonction javascript !!

    Une fois encore, c'est normal ??

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 41
    Points
    41
    Par défaut [RESOLU]
    Par rapport à ma question de départ tu as résolu le probleme je pense il suffisait juste de passer le mot cherché en parametre...

    Donc je peux remettre

    Merci encore en tout cas.

    Si tu sais comment résoudre mon autre probleme, je suis tout ouïe

  14. #14
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Une dernière idée, comme ça :
    Pour éviter de toucher à ton expreg,
    si au lieu de passer le mot clé de la recherche en paramètre GET,
    tu ne passais que quelque chose du type mode=recherche,
    lorsque tu arrives sur ta page détail,
    tu testes si tu es en mode recherche grâce à $_GET,
    si c'est le cas, tu récupères le mot clé dans la variable de session,
    sinon, tu utilises $crits.

    Pour ce qui est de ton site,
    j'ai trouvé l'adresse dans un de tes postes précédents,
    voilà tout.
    Et, en utilisant FF avec l'extension Web Developer,
    j'ai pu voir que, sur ta page traitsearch.php, le source généré par le serveur et le source affiché à l'écran n'étaient pas les mêmes.

    Fred

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 71
    Points : 41
    Points
    41
    Par défaut
    oui j'ai pensé à ta solution pour régler le problème des liens. Mais le truc c'est que ca ne résout rien ! Si l'utilisateur cherche le nom d'une balise html (je te l'accorde il fera exprès celui la ) à ce moment la y'aura pleins de problèmes sur la page. Essaie de chercher "h1" tu verras...
    C'est pour ca que la seule chose à faire c'est de résoudre le problème de la regex. J'ai demandé sur un forum regex, alors j'espère avoir la solution Moi perso je vois pas

    J'ai installé Web Developer. Très sympa cet outil on peut faire pleins de trucs
    Par contre quand j'utilise l'outil "voir la source" ca m'affiche la même chose que sans cet outil , donc j'ai pas la modification effectuée par javascript. Tu passes par là pour voir la source ??

  16. #16
    Membre éclairé Avatar de micetf
    Homme Profil pro
    Professeur des Ecoles
    Inscrit en
    Mai 2009
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur des Ecoles
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2009
    Messages : 557
    Points : 831
    Points
    831
    Par défaut
    Avec Web Developer, j'ai :
    Voir Source > Voir Source Ctrl+Maj+U
    qui m'affiche le source envoyé par le serveur
    (identique à Affichage > Code source de la page Ctrl+U)
    et
    Voir Source > Voir le code source généré
    qui m'affiche le code affiché (passé à la moulinette de JavaScript).

    Fred

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/06/2006, 09h26
  2. Réponses: 32
    Dernier message: 20/03/2006, 14h23
  3. Réponses: 8
    Dernier message: 06/02/2006, 16h38
  4. [Sécurité] variable de session dans url
    Par mussara dans le forum Langage
    Réponses: 2
    Dernier message: 07/01/2006, 22h53
  5. variables de session dans une popup
    Par erka dans le forum Langage
    Réponses: 7
    Dernier message: 26/11/2005, 19h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo