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

nikoland 47 Messages postés samedi 17 décembre 2005Date d'inscription 14 décembre 2006 Dernière intervention - 15 nov. 2006 à 22:30 - Dernière réponse : nikoland 47 Messages postés samedi 17 décembre 2005Date d'inscription 14 décembre 2006 Dernière intervention
- 19 nov. 2006 à 09:33
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ö
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
xque19 47 Messages postés dimanche 20 février 2005Date d'inscription 19 novembre 2006 Dernière intervention - 19 nov. 2006 à 01:24
3
Merci
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.

Merci xque19 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de xque19
xque19 47 Messages postés dimanche 20 février 2005Date d'inscription 19 novembre 2006 Dernière intervention - 16 nov. 2006 à 16:36
1
Merci
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";

?>
Commenter la réponse de xque19
nikoland 47 Messages postés samedi 17 décembre 2005Date d'inscription 14 décembre 2006 Dernière intervention - 18 nov. 2006 à 18:08
0
Merci
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ö
Commenter la réponse de nikoland
xque19 47 Messages postés dimanche 20 février 2005Date d'inscription 19 novembre 2006 Dernière intervention - 18 nov. 2006 à 18:55
0
Merci
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é.

++
Commenter la réponse de xque19
nikoland 47 Messages postés samedi 17 décembre 2005Date d'inscription 14 décembre 2006 Dernière intervention - 18 nov. 2006 à 18:59
0
Merci
Argh, évidemment...

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

Merci

Nikö
Commenter la réponse de nikoland
nikoland 47 Messages postés samedi 17 décembre 2005Date d'inscription 14 décembre 2006 Dernière intervention - 19 nov. 2006 à 09:33
0
Merci
Il faudra bien que je m'y mette de toute façon...

Merci

Nikö
Commenter la réponse de nikoland

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.