Page 1 sur 1

AJAX - Problème récupération des valeurs

Posté : 26 juil. 2008, 12:13
par Dj_Accr0s
Bonjour à tous,

Voilà, celà fait trois jours que je me prend la tête sur mon script.
Etant une bille en Ajax, j'ai regardé un peu les tutos que j'ai trouvé, et j'ai éssayé de les mettre en oeuvre dans mon code, mais voilà, j'arrive à atteindre une partie de ce que je veux( affichage du select), mais je n'arrive pas à récupérer les infos de mon fichier.

Voici d'abord mon fichier ajax.js :

Code : Tout sélectionner

// DEBUT MODULE DESCRIPTION // Creation d'un objet XMLHttpRequest en fonction de l'explorateur Internet function createRequestObject() { var req; if(window.XMLHttpRequest){ // Firefox, Safari, Opera... req = new XMLHttpRequest(); } else if(window.ActiveXObject) { // Internet Explorer 5+ req = new ActiveXObject("Microsoft.XMLHTTP"); } else { // Affichage erreur lorsque explorateur internet obsolete alert('Veuillez mettre jour votre explorateur Internet ou en utiliser un plus recent...'); } return req; } var http = createRequestObject(); function recupereDonnees() { // Charge le fichier PHP permettant d'afficher le tableau de données http.open('POST', 'modules/Description/admin/test.php', false); http.onreadystatechange = traitementDemande; http.send(null); } function traitementDemande() { if(http.readyState == 4 && http.status == 200){ // Charge le résultat de la requete l'endroit spécifié en fonction de l'action if( http.responseText ){ document.getElementById('DescImage').innerHTML = http.responseText; }else{ // si la page n'est pas trouvée (404), les droits sont insuffisants (501), ... alert ("Erreur : " + xhr.status); } } } function afficheDonnees(){ recupereDonnees(); setInterval(recupereDonnees,3000); } // FIN MODULE DESCRIPTION

Voici le bout de code de mon index :
echo "<form method=\"post\" action=\"#\" name=\"poster\">";

echo "<head><script type=\"text/javascript\" src=\"includes/ajax.js\"></script></head>";

echo "<table border=\"0\" width=\"100%\" cellpadding=\"1\" cellspacing=\"2\">";
echo "<tr><td><input type='button' value='rafraichir' onclick=\"recupereDonnees()\"><div id=\"DescImage\">";

echo "</div></td>";

if ($m_picture == "") {
echo "<td><img name=\"memberimg\" src=\"modules/Description/images/noimage.jpg\" width=\"128\" height=\"128\" align=\"right\" border=\"0\"></td></tr></table>";
}else{
echo "<td><img name=\"memberimg\" src=\"modules/Description/images/Photos/".$m_picture."\" width=\"128\" height=\"128\" align=\"right\" border=\"0\"></td></tr></table>";
}

echo "</tr></table>";

echo "<br><br><center><input type=\"hidden\" name=\"m_id\" value=\"$m_id\"><input type=\"submit\" value=\"Enregistrer\"></center></form>";


Et voici le fichier d'où proviennent les données à récupérer :
<?PHP
echo "<select name=\"m_picture\" size=\"8\" onChange=\"showimage()\">";


		$imgfolder = opendir("modules/Description/images/Photos/");
		while (false !== ($file = readdir($imgfolder))) {
			$filelist[] = $file;
		}
		asort($filelist);
		while (list ($key, $file) = each ($filelist)) {
			if (eregi(".gif|.jpg|.png|.bmp",$file)) {
				if ($file == $m_picture) {
					$sel = "selected";
				} else {
					$sel = "";
				}
				$file2 = eregi_replace(".gif|.jpg|.png|.bmp","",$file);
				echo "<option value=\"$file\" $sel>$file2</option>\n";

			} else {
				continue;
			}}
			
		closedir($imgfolder);


echo "</select>";

?>

Donc, quand je clique sur le bouton rafraichir, il doit normalement me rafraichir la liste déroulante pour revérifier s'il y a eu des modifications dans le répertoire des images.

Je voulais le faire en automatique, mais vu que je ne sais pas trop ou j'en suis dans mon code, pour le moment, j'ai fait u bouton rafraichir.

Y a t il quelqu'un qui pourrait m'aider à résoudre mon problème de récupération de données, car là, je rame complètement.

Je sais que j'ai du oublié dans le java d'intégrer mes données que je dois mettre à jours, mais le probleme est que je ne sais pas trop ou le faire et comment le faire.

D'avance, merci à vous.

Posté : 26 juil. 2008, 12:29
par chrislabricole
Se n'est pas un problème de chemin relatif par hasard ?
Parce-que ton script JS ajax est situé dans le répertoire includes et ton fichier php est situé dans
modules/Description/admin/test.php

Essaies peut-être
../modules/Description/admin/test.php

Je dit ça instinctivement hein ;) parce-que je suppose que ton répertoire modules est situé à la racine et non pas dans includes...

Posté : 26 juil. 2008, 12:36
par Dj_Accr0s
Merci de ta réponse, mais j'avais déjà éssayé ça aussi, mais là, je n'ai même plus le cadre du select, je n'ai plus rien du tout qui apparait.

Posté : 26 juil. 2008, 12:45
par chrislabricole
Ah ok !

donc en fait ton script PHP doit prendre les noms des photos...

Donc je pense qu'en fait c'est un problème de chemin mais dans ton script test.php

Parce-que tu appelles ton script php avec :
modules/Description/admin/test.php

et dans ce script test, tu appelles le répertoire de tes images avec :
modules/Description/images/Photos/

Ça veut dire que les photos se trouvent dans :
modules/Description/admin/modules/Description/images/Photos/

donc dans ton script PHP (test.php) , mets :
../images/Photos/
à la place de
modules/Description/images/Photos/

Ça devrait marcher....

Posté : 26 juil. 2008, 13:49
par Dj_Accr0s
Egalement testé, mais ce n'est toujours pas ça.

sans utiliser le systeme de rafraichissement, les noms d'image apparaissaient bien dans la liste déroulante, donc pas de probleme de chemin, pour moi.

Et depuis que j'ai adapté pour mettre l'ajax, il m'affiche la liste déroulante mais sans les noms des images.

Donc, d'après ce que j'avais vu dans certain tuto, il parlait d'appeler les valeurs en mettant quelque chose dans ce style là à la place de http.send(null); mettre http.send(valeur); :

Code : Tout sélectionner

function recupereDonnees() { // Charge le fichier PHP permettant d'afficher le tableau de données http.open('POST', 'modules/Description/admin/test.php', false); http.onreadystatechange = traitementDemande; http.send(null); }
Mais je ne sais pas quelle valeur mettre, à part $file et je ne sais pas comment la présenter.

Posté : 26 juil. 2008, 14:10
par mae
Alors, dans ton code tu compares régulièrement des données à une variable "$m_picture",
ou est définie cette variable ?

Posté : 26 juil. 2008, 14:14
par mae
Donc, d'après ce que j'avais vu dans certain tuto, il parlait d'appeler les valeurs en mettant quelque chose dans ce style là à la place de http.send(null); mettre http.send(valeur);
send prend en argument, les variables POST/GET à passer, si tu en as pas, c'est null

Posté : 26 juil. 2008, 17:29
par Dj_Accr0s
$m-picture est la variable de la dernière image uppé dans le dossier et qui a été enregistré dans la base de donnée.

$file est la variable des images qui sont dans le dossier.

send prend en argument, les variables POST/GET à passer, si tu en as pas, c'est null

Et qu'est ce que tu me conseil pour adapter mon code pour que ça fonctionne ??

Posté : 26 juil. 2008, 23:49
par momox
Pour débugger ce type de script, rien de mieux que firefox couplé a firebug ;)