Modifier une variable session lors d'un clic sur une url [Résolu]

Signaler
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006
-
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006
-
Salut à tous,

J'aimerais lorsque je clique sur une url qu'une de mes variables session soit modifiée afin de traiter ensuite quelle page afficher...

J'avais déjà réalisé cela en utilisant la méthode GET, je passais un url_encode($mavariable) que je traitais ensuite. Ici, il faudrait que $_SESSION['mavariable'] soit modifiée sur un évènement clic sur un lien.

J'espère avoir été assez clair.
Merci d'avance.

Nikö

6 réponses

Messages postés
47
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
19 novembre 2006
1
avec le code que je t'ai mis plus haut, tu as tout ce qu'il te faut pour y arriver, le concept est simple: tu fais appel à une fonction javascript dans ta page qui va elle de son côté faire appel à un script php pour l'executer côté serveur et cette même fonction php te retournera (si çà s'est executé correctement) comme résultat ce qui est affiché dans ce script php.
Messages postés
47
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
19 novembre 2006
1
Salut!
La solution, d'après moi, serait d'utiliser l'object XMLHttpRequest de javascript pour envoyer une requete asynchrone.
<li>Dans le fichier où se trouve le lien:</li>
<script type="text/javascript">
function lancerRequete(requete,methode)
{
    if (window.XMLHttpRequest)
    {
        xhr_object = new XMLHttpRequest();
        xhr_object.open(methode, requete, true);
        xhr_object.send(null);
        xhr_object.onreadystatechange = function()
        {
            if(xhr_object.readyState == 4)
            {
                alert(xhr_object.responseText);
            }
        }
    }
    else if(window.ActiveXObject)
    {
        xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
        xhr_object.open(methode, requete, true);
        xhr_object.send(null);
        if(xhr_object.readyState == 4)
        {
            alert(xhr_object.responseText);
        }
    }
    else
    {
        alert('Votre navigateur ne supporte pas les objets XMLHTTPRequest...');
        return(false);
    }
}
</script>

[# ]

<li>créer un fichier majSession.php (par example) contenant:</li>
<?php

$_SESSION['val']=$_GET['newVal'];
echo "Mise à jour effectuée";

?>
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006

J'ai presque réussi à faire ce que je voulais sans avoir à utiliser AJAX comme tu me le suggères. Cependant, il reste un petit soucis.

En clair, je voudrais faire la même chose qu'une transmission de variable par url : http://url?page=page1

Pour cela, j'ai fait cela dans mes liens :
[index.php ">accueil]
[index.php ">logithèque]

Ca a l'air de fonctionner, c'est à dire que la variable $_SESSION['page'] stocke bien accueil ou logithèque, cependant, en fait, il stocke que logithèque, le clic sur accueil ne change pas la variable. Je ne sais pas pourquoi.

Quelqu'un pourrait-il me sortir de ce pas ?

Nikö
Messages postés
47
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
19 novembre 2006
1
Salut,

Ton code ne convient absolument pas au problème que tu souhaite résoudre, parce que là quand tu clique sur un lien il ne se passera absolument rien, si tu regarde bien la source de ta page sous IE ou Firefox tu aura:
[index.php accueil]
[index.php logithèque]

c'est parce que quand tu lance ta page PHP, le compilateur va interpréter les 2 instruction entre <?php ... ?> et comme c'est 2 affectation dans la même variable, du coup tu te retrouve toujours avec la valeur de la dernière affectation dans $_SESSION['page'] c'est à dire 'logiteque'.
D'après moi ta méthode est erronée et je pense que la seule façon de faire dans ce cas est d'utiliser un appel asynchone à un script qui mettra à jour ta variable de session, enfin çà c'est mon avis, après tout il y a peut-être d'autres solutions auquels j'ai pas pensé.

++
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006

Argh, évidemment...

Il va falloir que j'arrive à trouver une solution parce que les appels asynchrones, j'y connais vraiment rien...

Merci

Nikö
Messages postés
47
Date d'inscription
samedi 17 décembre 2005
Statut
Membre
Dernière intervention
14 décembre 2006

Il faudra bien que je m'y mette de toute façon...

Merci

Nikö