Passer une variable PHP après refresh de div

Mammouth du PHP | 737 Messages

16 oct. 2011, 00:39

Bonjour,

Je suis novice en ajax et cherche le moyen de passer une variable que je pourrais tester après le refresh d'une div pour tester la page courante.

En clair si ma variable = truc, je fais un echo "class=page_en_cours" sans recharger ma page depuis ma page d'index.

Ma solution proposée, je déclare une variable en dur dans la page appelée, mais impossible de récupérer cette valeur sur l'index.

Quelqu'un a une idée du pourquoi du comment et une solution à ce problème ?

Mega
;)
Dyslexics are teople poo

ViPHP
xTG
ViPHP | 7331 Messages

16 oct. 2011, 09:10

Tu cherches à savoir si c'est juste un rafraichissement qui a été appelé ou bien si tu proviens d'une autre page c'est bien ça ?
Tu devrais pouvoir trouver ton bonheur dans la variable $_SERVER dans ce cas.

Mammouth du PHP | 737 Messages

16 oct. 2011, 23:11

Salut xTG, toujours les mêmes ;)

En fait, je pensais pouvoir récupérer l'info via $_SERVER['REQUEST_URI'] mais idem.

Ma page se construit en 3 div

header
page
footer

mais tout ce qui se rafraichit dans la div page n'est pas récupérable dans header ou footer quelque soit la variable, le champ etc... du moins je sèche là-dessus.

Mega
;)
Dyslexics are teople poo

ViPHP
xTG
ViPHP | 7331 Messages

17 oct. 2011, 09:04

Je suis toujours autant dans les nuages désolé.
Pourrais-tu nous en dire plus ?

Tu parles de variable déclarée dans l'index qui n'est pas récupérable dans ton header, page, footer (fichiers inclus dans l'index) ?

Mammouth du PHP | 737 Messages

17 oct. 2011, 11:31

Re,

NP :)

J'ai mon fichier d'index avec 3 div

header (+menu)
page
footer

quand je clique sur un élément de menu je recharge en ajax ma div "page" en faisant un include ou autre donc je reste sur l'index (ce qui marche très bien) mais les variables chargées dans la div page ne sont bizarrement pas accessibles ailleurs que dans cette div. J'ai juste besoin de récupérer une valeur pour pouvoir gérer un élément se trouvant dans le footer.

Je ne peux pas passer de variables dans mon include et ne peut faire de header("location"). Je ne sais pas si je suis clair dans mes expli ^^

++

Mega
;)
Dyslexics are teople poo

Mammouth du PHP | 737 Messages

18 oct. 2011, 22:01

C'est p'tet pas possible :roll:
Dyslexics are teople poo

ViPHP
ViPHP | 1996 Messages

19 oct. 2011, 00:11

Tout dépend comment tu fais ton include();
Le passage de Variable en Ajax n'est possible que si tu les fais passer en méthode GET ou en POST.
Tu peux aussi les pré-passées en utilisant les sessions PHP mais il te faudra quand même GET ou POST.

Un exemple en méthode GET :

Code : Tout sélectionner

var majTxDeChangeObject = createXmlHttpRequestObject (); function majTxDeChange() { if (majTxDeChangeObject) { try { var lienGet = "?affiche=maj_taux_de_change"; majTxDeChangeObject.open("GET", "index.php"+lienGet, true); majTxDeChangeObject.onreadystatechange = majTxDeChangeStateChange; majTxDeChangeObject.send(null); } catch(e) { alert ("Impossible de se connecter au serveur : \n"+e.toString()); } } } function majTxDeChangeStateChange() { if (majTxDeChangeObject.readyState == 4) { if (majTxDeChangeObject.status == 200) { try { } catch(e) { alert ("Erreur lors de la lecture de la réponse : " + e.toString()); } } else { alert ("Il y a un problème de réception des données:\n" + majTxDeChangeObject.statusText); } } }
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Mammouth du PHP | 737 Messages

19 oct. 2011, 10:11

Bonjour Aureusms,

Moi je fais comme ça, sur l'index :
<a href="javascript:void(0);" onClick='check_content("traitement.php?id=rubrique1")'>rubrique1</a>
Ma page de traitement :
$id = $_GET['id']; 
if ($id == 'rubrique1'){ include ("rubrique1.php"); }else{ echo 'no match'; }
J'ai essayé de passer des paramètres mais je n'arrive pas à les reprendre sur la home.

Mon code ajax :

Code : Tout sélectionner

function makeObject(){ var x; if (window.ActiveXObject) { x = new ActiveXObject("Microsoft.XMLHTTP"); }else if (window.XMLHttpRequest) { x = new XMLHttpRequest(); } return x; } var request = makeObject(); var the_content; function check_content(the_content){ request.open('get', the_content); request.onreadystatechange = parseCheck_content; request.send(''); } function parseCheck_content(){ if(request.readyState == 1){ document.getElementById('content').innerHTML = 'Loading...'; } if(request.readyState == 4){ var answer = request.responseText; document.getElementById('content').innerHTML = answer; } }
J'ai essayé des getElement, de feinter en variable GET, de SERVEUR...Ca passe pas.

Mega
;)
Dyslexics are teople poo

ViPHP
xTG
ViPHP | 7331 Messages

19 oct. 2011, 11:19

quand je clique sur un élément de menu je recharge en ajax ma div "page" en faisant un include ou autre donc je reste sur l'index (ce qui marche très bien) mais les variables chargées dans la div page ne sont bizarrement pas accessibles ailleurs que dans cette div. J'ai juste besoin de récupérer une valeur pour pouvoir gérer un élément se trouvant dans le footer.
C'est normal, car ton div page est exécuté côté serveur à un instant t+1 alors que le footer a été exécuté à l'instant t. Donc au moment où tu charges ton nouveau div page, le footer n'est qu'un amas de texte formant du HTML et n'est plus du tout un script PHP en cours de résolution.

Si tu veux avoir un footer dynamique en fonction du div page je te conseillerai de faire en sorte de recharger les deux en même temps sur le même appel, ainsi tu aurais un script PHP pour les deux et les variables seraient partagées.

Mammouth du PHP | 737 Messages

23 oct. 2011, 01:05

LOL of course c'est d'une logique implacable mais je suis un poil rêveur ou con, au choix ^^

A ce tarif autant recharger la page entièrement.

MERCI encore à tous les intervenants :)
Dyslexics are teople poo

tempo
Invité n'ayant pas de compte PHPfrance

13 mars 2012, 23:03

Bonjour,

un type de variable que tu peux récupérer ou modifier depuis une div en ajax, est la $_SESSION.
Si cela peut t'aider..

cdt