JeuWeb - Crée ton jeu par navigateur
Demande d'aide pour script AJAX/Javascript - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Demande d'aide pour script AJAX/Javascript (/showthread.php?tid=1198)

Pages : 1 2 3


RE: Demande d'aide pour script AJAX/Javascript - Roworll - 22-05-2007

Bon bin on progresse...
Maintenant, reste à voir pourquoi PhP renvoie ça.
Déjà, il manque les nouvelles valeurs.
On va procéder par étapes.
Etape 1 :
Vérifier que les valeurs devant être affichées existent bien dans PHP.
Mets en commentaire tous les echos de ton fichier PHP et affiche à la place les variables PHP
En gros ça devrait donner:
Code PHP :
<?php 
echo "Ressource : ". $newvaleur['quantite'];
echo
"Pétrole : " . $newvaleur['quantite'];
on mets en commentaire les echos suivant
//echo "document.getElementById('resId1').innerHTML='".$newvaleur['quantite']."';";
//echo "document.getElementById('resId2').innerHTML='".$newpetrole['quantite']."';";

Une fois que ça marchera, il restera peut être à travailler un poil les deux echos qui mettront à jour la page HTML d'origine.


RE: Demande d'aide pour script AJAX/Javascript - Alchern - 22-05-2007

La fenêtre alert affiche petrole:cout:
Donc les variables php ont du mal à passer la frontière, contrôle trop strict apparament. Smile


RE: Demande d'aide pour script AJAX/Javascript - Roworll - 23-05-2007

C'est pas vraiment du à cause de la frontière mais plutôt au code PhP qui à un petit problème.

J'ai regardé plus en profondeur ton code PhP fourni en début de sujet.
Tu essayes de renvoyer $newvaleur['quantite'] et $newvaleur['petrole'] mais ces variables n'existent pas en tant que tel. $newvaleur est une variable toute simple, pas un tableau.

Renvoie plutot les valeurs qui te servent à mettre ta base de données à jours ($newvaleur et $newcout).

Si je reprends ton code PhP modifié, ça donnerait
Code PHP :
<?php
mysql_connect
('localhost', 'root', ''); // On se connecter à la BDD
mysql_select_db('test'); // On sélectionne la BDD ressources

$res1 = mysql_query('SELECT * FROM `ressources` WHERE name="petrole"'); // On fait une requete du pétrole
$rows1 = mysql_fetch_array($res1); // On fait un array de la requete

$newvaleur = $rows1['valeur'] + 10;
$newcout = $rows1['cout'] + 10;

mysql_query('UPDATE ressources SET valeur="'.$newvaleur.'", cout="'.$newcout.'" WHERE name="petrole"');

echo
"document.getElementById('resId1').innerHTML='".$newvaleur."';";
echo
"document.getElementById('resId2').innerHTML='".$newcout."';";
?>



RE: Demande d'aide pour script AJAX/Javascript - Alchern - 23-05-2007

Hum, ça a l'air de marcher comme ça, en effet, le souci venait du php, toutefois, il m'affiche toujours une fenêtre alert contenant les echos du php, alors que j'ai supprimé la commande alert dans le fichier .js. C'est bizarre. Mais dans tous les cas, c'est un grand progrès.
.

Edit: après essais, j'arrive à les places dans les balises d'un tableau. l'affichage se fait correcement à l'intérieur là où je veux. Mais toujours cette satané fenêtre alert qui apparait à chaque rafraichissement. Ca doit être une erreur peut etre, générée par javascript. Note: L'incrémentation dans le tableau ne se fait que une fois que j'ai cliqué sur OK de l'alert.


RE: Demande d'aide pour script AJAX/Javascript - Alchern - 24-05-2007

Roworll, un dernier petit coup de main pour virer cette mechante fenêtre alert javascript? j'y suis presque, pitié


RE: Demande d'aide pour script AJAX/Javascript - orditeck - 24-05-2007

Essais avec ceci :

Code PHP :
<?php 
xhr_object
.onreadystatechange = function() { // Si le readyState change alors on execute ce qui est en bas
if(xhr_object.readyState == 4 && xhr_object.status == 200)
{
//Execution du code retourné.
//ca peut planter si le contenu de xhr_object.responseText est incompréhensible par Javascript
eval(xhr_object.responseText);
}
}

Je n'ai pas vraiment pris le temps d'analyser, mais logiquement...


RE: Demande d'aide pour script AJAX/Javascript - Alchern - 24-05-2007

l'eval était déjà en place


RE: Demande d'aide pour script AJAX/Javascript - Roworll - 24-05-2007

Donc si je résume, tu as encore un alert javascript qui t'embête.
Il doit en rester un dans le code quelque part je suppose.

Tu peux me recopier ici ce qu'il affiche exactement ?
Ca m'aidera un peu à identifier d'ou vient le soucis.

PS
Désolé pour le temps de réponse. Je n'ai le net qu'à partir du boulot en ce moment et l'après midi d'hier a plutôt été chargée


RE: Demande d'aide pour script AJAX/Javascript - Alchern - 24-05-2007

pourtant, il n'y a aucune commande alert dans l'ensemble de mes trois fichiers: la preuve:
Code PHP :
<?php 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Augmentation des ressources sans actualiser</title>
<
script type="text/javascript" src="ajax.js">

</
script>
</
head>
<
body onload="window.setTimeout('resRequest()',5000)">
<
table>


<
tr>
<
td>Quantité:</td>
<
td id="resId1"></td>

</
tr>
<
tr>
<
td>Cout:</td>
<
td id="resId2"></td>

</
tr>


</
table>
<
br />


</
body>
</
html>

Code PHP :
<?php 
// JavaScript Document
function resRequest() { // On crée la fonction resRequest
var xhr_object = null; // On crée déjà la variable xhr_object

/** On verifie si le navigateur accepte le XMLHttpRequest **/
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(
window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else {
// XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}



xhr_object.open("GET", "multiple.php", true)
xhr_object.onreadystatechange = function() { // Si le readyState change alors on execute ce qui est en bas
if(xhr_object.readyState == 4 && xhr_object.status == 200)
{

eval(
xhr_object.responseText);
}
}
xhr_object.send(null); // On envoie rien car on utilise pas la méthode POST
window.setTimeout('resRequest()',5000); // On appelle cette fonction tout es les 1000millisecondes qui vaut 1secondes.
}
Code PHP :
<?php

mysql_connect
('localhost', 'root', ''); // On se connecter à la BDD
mysql_select_db('test'); // On sélectionne la BDD ressources

$res1 = mysql_query('SELECT * FROM `ressources` WHERE name="petrole"'); // On fait une requete du pétrole
$rows1 = mysql_fetch_array($res1); // On fait un array de la requete

$newvaleur = $rows1['valeur'] + 10;
$newcout = $rows1['cout'] + 10;

mysql_query('UPDATE ressources SET valeur="'.$newvaleur.'", cout="'.$newcout.'" WHERE name="petrole"');





echo
"document.getElementById('resId1').innerHTML='".$newvaleur."';";
echo
"document.getElementById('resId2').innerHTML='".$newcout."';";
?>

PS j'ai un peu modifié le fichier index.php pour avoir l'affichage dans un tableau basique



Edit, je ne sais pas pourquoi mais tout me semble fonctionner maintenant, la fenêtre alert a disparu, donc tout marche à merveille, merci à tous pour votre précieux aide.


RE: Demande d'aide pour script AJAX/Javascript - Roworll - 24-05-2007

Effectivement, pas d'alert en vue.
Si ton Javascript est dans un fichier à part, il est possible que le navigateur ait gardé une mauvaise version en cache.

Essaye de nettoyer le cache du navigateur puis reteste.

Sinon.. bin je suis à cours d'idée...