[AJAX - PHP] Variable globales

Fermé
yopopipo - 9 févr. 2010 à 16:04
 yopopipo - 10 févr. 2010 à 14:35
Bonjour à tous,
Je fais mes premiers pas dans la technologie AJAX. J'utilise pour le moment le FrameWork xajax.
Je crée un site de jeu-concours et j'aimerais développer une page qui affiche un lot et son compteur associé (les lots et leur compteur sont dans une base MYSQL).
Le but est donc de voir le compteur évoluer sans recharger la page.

Mon probleme est le suivant: le lot souhaité par le joueur est passé en parametre via un formulaire sur la page precedente, j'aimerai donc inserer $_POST['nom du lot'] dans la fonction appelé toutes les 5 secondes via ajax.
Du style mysql_query("SELECT compteur, nom FROM lots WHERE nom='Nintendo DS'");

Si je le marque ainsi, ca fonctionne, mais si je note:

mysql_query("SELECT compteur, nom FROM lots WHERE nom='". $_POST['NomDuLot'] ."'");
c'est comme si j'avais noté: ("SELECT compteur, nom FROM lots WHERE nom=' ' ")
Donc Mysql me revoit une ligne vide.

Je vous remercie de vous pencher sur mon soucis.

Je vous joins le code de ma fonction:

function Afficher()
{
	$reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur

	$connexion = mysql_connect("sever", "login", "pass");
	mysql_select_db("bdd");
	$query = "SELECT compteur, but, nom FROM lots WHERE nom='". $_POST['nom'] ."'";
	$req = mysql_query($query) or die(mysql_error()); 
	mysql_close($connexion);
	
	
	$array = mysql_fetch_array($req);
	
	$lot='';// Initialisation de la variable $lot
	$lot .= ''. $array['nom'].':<br/>'. $array['compteur'] .' sur '. $array['but'];  
	
	
	$reponse = new xajaxResponse('ISO-8859-1');
	$reponse->addAssign("affLots","innerHTML",$lot); // affichage du contenu de $lot (le lot et son compteur) dans le div affLot
	return $reponse->getXML();
}

4 réponses

gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
9 févr. 2010 à 16:14
Salut,

tu peux tout simplement appelle un fonction JS qui exécute une fonction AJAX afin de récupérer les infos du compteur.
C'est le même principe que la technologie Comet (comme le chat de facebook), mais en fake ! lol

A+

Gaerebut
0
Desolé si je ne saisi pas bien, mais je dois tout de meme effectuer une requete (donc php) avec une variable POST .
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
9 févr. 2010 à 16:29
oui mais tu appelle ta fonction JS de manière récursive avec setTimeout et cette dernière envoie une requête AJAX avec la variable post reçu (que tu peux stocker dans une variable)

Exemple:

<script type="text/javascript">
var compteur = '<?php echo $_POST['NomDuLot']; ?>'; // Si on part du principe qu'on a testé avant si elle existe bien
</script>

Voila !

A+

gaerebut
0
Bon j'ai avancé. Le joueur choisi un lot et ensuite il peut voir le compteur associé evoluer en temps réel.
Probleme: ne marche pas sous IE 7; la liaison est pourtant établie puisque je vois le compteur des l'ouverture de la page, mais il n'evolu pas....
Je vous montre le code:

<script type="text/javascript">


function writediv(texte)
{
document.getElementById('box').innerHTML = texte;
}


function verifCompteur()
{
	var lot = '<?php echo $_GET['lot']; ?>'; // Si on part du principe qu'on a testé avant si elle existe bien
	texte = file('/extra-compteur.php?lot=' + lot );
	writediv('<span style="color:#1A7917"><b>' + texte +' :</b></span>')
}


function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}

function refresh()//script javascript qui va appeler le fonction toutes les secondes
{
		verifCompteur();
		setTimeout(refresh, 1000);
}
</script>
</head>

<body onload = "refresh();">

<div id="box"></div>


merci d'avance
0