Problème global php avec ajax

Problème global php avec ajax - PHP - Programmation

Marsh Posté le 20-08-2006 à 01:54:42    

Voila je vais essayer d'être le plus clair possible. Donc ici: http://rpgillusion.franceserv.com/game/
 
Si vous cliquez sur "créer un personnage" cela va vous afficher "ttttt"
 
Voila le code:
 

Code :
  1. if ($loginOK == false) {
  2. $controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control" );
  3. $controlrow = mysql_fetch_array($controlquery);
  4.     if(isset($_POST['ajax']) && $_POST["page"] && $_POST['ajax'] == true ){
  5.         if ($_POST["page"] == "verify" ) {include('users.php'); verify(); }
  6.  if ($_POST["page"] == "sondage" ) {include('login.php'); sondage(); }
  7.     }else{
  8.     echo'   <img src="images/login/puce2.gif"/>&nbsp;<a href="#" onclick="javascript:ajax_request(\'POST\', \'login.php?page=sondage\', \'ajax=true&Monpost1=\'+ document.getElementById(\'bouton\').value,\'responseText\',\'principal\');" ><span class="marron1">Créer un personnage</span></a><br />';}
  9. }


 
 
Donc comme vous avez pu l'apercevoir j'inclus la page login.php et la focntion sondage:
 

Code :
  1. function sondage() {
  2. //$controlrow = $GLOBALS['controlrow'];  
  3. global $controlrow;
  4. $page = '<b>'.$_GET['id'].''.$controlrow['copyright'].'</b>ttttttt';
  5.     echo $page;
  6.    
  7. }


 
 
Le problème c''est que ca affiche que le tttt  sur cette ligne: $page = '<b>'.$_GET['id'].''.$controlrow['copyright'].'</b>ttttttt';  ce qui signifie que le global du dessus ne fonctionne pas pourtant index, je déclare bien ma requete:
 
if ($loginOK == false) {
 
 $controlquery = doquery("SELECT * FROM {{table}} WHERE id='1' LIMIT 1", "control" );
 $controlrow = mysql_fetch_array($controlquery);
 
J'utilise ajax pour le lien, si je met un lien classique le global fonctionne (<a href="?page=sondage">lien</a>  .
 
Que dois je faire pour afficher le global dans la fonction avec ce lien ajax?

Reply

Marsh Posté le 20-08-2006 à 01:54:42   

Reply

Marsh Posté le 20-08-2006 à 09:50:33    

Le X de AJAX veut dire XML. Là, je n'en vois pas.

Reply

Marsh Posté le 20-08-2006 à 11:40:02    

Je vois pas bien le rapport avec la choucroute non plus là... :??:
 
 
Et puis :
 

Citation :

J'utilise ajax pour le lien


 
 [:blinkgt]


Message édité par Dj YeLL le 20-08-2006 à 11:40:22

---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 20-08-2006 à 11:54:25    

Les variables globales, faut eviter, passe la variable en parametre de ta fonction.


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 20-08-2006 à 12:35:04    

Pourtant c'est simple a comprend, si j'utilise un lien formé pour ajax, ca n'affichera pas le global dans la fonction sondage. Si jemet un lien classique, ca affichera bien la global.

Message cité 1 fois
Message édité par sff le 20-08-2006 à 12:36:43
Reply

Marsh Posté le 20-08-2006 à 13:16:04    

sff a écrit :

Pourtant c'est simple a comprend, si j'utilise un lien formé pour ajax, ca n'affichera pas le global dans la fonction sondage. Si jemet un lien classique, ca affichera bien la global.


 
Ben franchement non, c'est pas "simple" comme tu dis ... pour moi "si j'utilise un lien formé pour ajax, ca n'affichera pas le global dans la fonction sondage" ça veut rien dire, désolé [:spamafote]


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 20-08-2006 à 16:01:41    

Dj YeLL tu comprend le problème ou pas?  
 
Lien en ajax = global qui ne fonctionne pas sur la fonction sondage()
 
Lien classique = global qui fonctionne sur la fonction sondage()

Reply

Marsh Posté le 20-08-2006 à 16:09:30    

ca change rien ton global c ets laid :/
tu pourrais mettre ta variable en parametre de ta fonction
 
edit :
 

zapan666 a écrit :

Les variables globales, faut eviter, passe la variable en parametre de ta fonction.


 
la troisieme fois c ets sodoban :o
[:the real moins moins]


Message édité par mIRROR le 20-08-2006 à 16:10:44
Reply

Marsh Posté le 20-08-2006 à 16:16:49    

gebruik a écrit :

Le X de AJAX veut dire XML. Là, je n'en vois pas.


stfu avec cette stupidité, merci.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 20-08-2006 à 16:29:58    

Donc voila:
 
Mon page login avec la fonction sondage()
 

Code :
  1. <?php
  2. function sondage($controlrow) {
  3. $page = '<b>'.$controlrow['copyright'].'</b>ttttttt';
  4.     echo $page;
  5.    
  6. }
  7. ?>


 
 
Et lien qui pose problème avec l'inclusion de la fonction sondage()
 
if ($loginOK == false) {
 
   if(isset($_POST['page'])){
 
 
       if ($_POST["page"] == "verify" ) {include('users.php'); verify(); }
     if ($_POST["page"] == "sondage" ) {include('login.php'); sondage($controlrow);}
   
 
    }else{
   echo '<img src="images/login/puce2.gif"/>&nbsp;<a href="#" onclick="javascript:ajax_request(\'POST\', \'?page=sondage\', \'ajax=true&Monpost1=\'+ document.getElementById(\'bouton\').value,\'responseText\',\'principal\');" ><span class="marron1">Créer un personnage</span></a><br />';
 
 }
 }
 
ca n'affiche rien pourtant la fonction sondage n'est pas vide !
 
Exemple: http://rpgillusion.franceserv.com/game/


Message édité par sff le 20-08-2006 à 16:32:57
Reply

Marsh Posté le 20-08-2006 à 16:29:58   

Reply

Marsh Posté le 21-05-2009 à 00:32:55    

Bonsoir,
Je réponds à un topic de 2006 mais vu qu'aucune réponse n'a été apportée, je me permets d'apporter ma petite contribution.
 
Si vous voulez utiliser une variable globale, créez la dans ce style :
$_SESSION['mavariableglobale'];
mais avant, pour que cette variable globale soit accessible à la fois depuis la page principale et la page dite "inline" (celle chargée en AJAX), vous devrez ouvrir l'accès à la session utilisateur globale en cours en ajoutant, tout en haut des 2 fichiers concernés la commande suivante :
session_start();
 
donc au final ça donne :
* fichier principal :
session_start();
$_SESSION['mavariableglobale'] = ''; // initialisation à faire de préférence dans le fichier principal car le premier à être chargé
... code du fichier principal...
 
* fichier "inline" (AJAX) :
session_start();
... code du fichier inline avec utilisation de la variable globale $_SESSION['mavariableglobale']...
 
Avec cette méthode, vous transformez la variable $_SESSION['mavariableglobale'] en une seule et même variable pour les 2 fichiers.
 
Et celui qui dit que AJAX sans XML, c'est pas de l'AJAX à cause du X, c'est un boulet :x désolé, mais j'ai pas pu résister...
C'est pas parce qu'un site web n'utilise pas de XML qu'il n'exploite pas la technologie AJAX! AJAX = avant tout communication asynchrone avec le serveur.
 
Salutations.

Message cité 1 fois
Message édité par omeya le 21-05-2009 à 01:24:44
Reply

Marsh Posté le 21-05-2009 à 22:55:03    

omeya a écrit :

Bonsoir,
Je réponds à un topic de 2006 mais vu qu'aucune réponse n'a été apportée, je me permets d'apporter ma petite contribution.
 
Si vous voulez utiliser une variable globale, créez la dans ce style :
$_SESSION['mavariableglobale'];
mais avant, pour que cette variable globale soit accessible à la fois depuis la page principale et la page dite "inline" (celle chargée en AJAX), vous devrez ouvrir l'accès à la session utilisateur globale en cours en ajoutant, tout en haut des 2 fichiers concernés la commande suivante :
session_start();
 
donc au final ça donne :
* fichier principal :
session_start();
$_SESSION['mavariableglobale'] = ''; // initialisation à faire de préférence dans le fichier principal car le premier à être chargé
... code du fichier principal...
 
* fichier "inline" (AJAX) :
session_start();
... code du fichier inline avec utilisation de la variable globale $_SESSION['mavariableglobale']...
 
Avec cette méthode, vous transformez la variable $_SESSION['mavariableglobale'] en une seule et même variable pour les 2 fichiers.
 
Et celui qui dit que AJAX sans XML, c'est pas de l'AJAX à cause du X, c'est un boulet :x désolé, mais j'ai pas pu résister...
C'est pas parce qu'un site web n'utilise pas de XML qu'il n'exploite pas la technologie AJAX! AJAX = avant tout communication asynchrone avec le serveur.
 
Salutations.


 
une session pour juste une variable globale  :sweat:  
 

Reply

Marsh Posté le 22-05-2009 à 21:39:50    

tomsoft, tes sites n'utilisent jamais de session?

Reply

Marsh Posté le 23-05-2009 à 10:51:30    

sisi, mais pas pour une variable globale

 

edit : a moins que par globale tu entends variable de session, qui reste entre tes pages :jap:


Message édité par tomsoft le 23-05-2009 à 10:52:05
Reply

Marsh Posté le 25-05-2009 à 00:36:20    

Ah j'ai confondu variable globale et variable de session! :x
Je crois que je me suis trop focalisé sur le résultat obtenu... autant pour moi.
 
Sinon, aurais-tu une solution similaire côté variable globale sans passer par la transmission de variable dans une fonction? Je suis peut-être dans l'erreur mais j'ai l'impression que les variables globales sont les grands oubliées de la technique AJAX, idem pour les fonctions globales.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed