Hello à tous,
je suis un train d'essayer de programmer une page web en PHP/AJAX qui se connecterait à une BD MySQL.
Je me suis largement inspiré du cours : Introduction à AJAX et interaction avec PHP de Gaël Donat.
J'ai trois page :
- la page principale HTML
- la page javascript qui s'occupe de gérer l'ajax proprement dit
- la page PHP qui se connecte à la BD MySQL et qui renvoie le résultat d'un SELECT à la fonction Javascript en format XML.
Mon problème, c'est que je n'ai aucun feedback quand au résultat obtenu. La table sur laquelle porte la requête SQL contient 4 champs mais aucun n'est affiché par la fonction Javascript.
Pourtant, quand j'encadre mon code PHP par des balises html, head, body et que je regarde le résultat, les 4 résultats apparaissent bien.
De même, quand je fais porter ma fonction Javascript sur un fichier XML au lieu de sur mon fichier PHP, j'ai bien un résultat.
Là où ça coince, c'est quand j'utilise ma fonction Javascript ET mon code PHP ensemble...
Mon code :
HTML
<!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" />
<link rel="stylesheet" type="text/css" href="styles.css">
<title>Bienvenue</title>
</head>
<div id="contenu">
<?php
$mysql_host = "monserveur";
$mysql_user = "monuser";
$mysql_password = "monpass";
$mysql_db = "madb";
$connexion = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ('Error connecting to mysql');
if ($connexion != 0)
{
echo ("Connexion établie");
}
mysql_select_db($mysql_db);
$mon_champ = isset($_POST['mon_champ']) ? $_POST['mon_champ'] : '';
if ($mon_champ)
{
$table = "Messages";
$requete = "INSERT INTO Messages(NumMess,Mess) VALUES ('','$mon_champ')";
$resultat = mysql_query($requete) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
echo ("Résultat : $resultat - Champ = $mon_champ");
}
?>
<script type="text/javascript" src="ajax_script.js"></script>
<p>
<a href="javascript:ajax();">Refresh</a>
</p>
<form method="POST">
<input name="mon_champ" type="text" >
<input type="submit" value="OK" >
</form>
</div>
</body>
</html>
JAVASCRIPT
function ajax()
{
var xhr=null;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.onreadystatechange = function() { alert_ajax(xhr); };
xhr.open("GET", "http://belotte.net84.net/reponse.php", true);
xhr.send(null);
}
function alert_ajax(xhr)
{
var docXML= xhr.responseXML;
var items = docXML.getElementsByTagName("donnee");
//alert(items.length);
for (i=0;i<items.length;i++)
{
alert (items.item(i).firstChild.data);
}
}
PHP
<?php
header('Content-Type: text/xml');
echo("<?xml version=\"1.0\"?><exemple>");
//on connecte a la BDD
$dbhost="monserveur";
$dbuser="monuser";
$dbpass="monpass";
$mysql_db = "madb";
$dblink=mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($mysql_db);
$query = "SELECT * FROM Messages";
$result = mysql_query($query,$dblink) or die (mysql_error($dblink));
while ($row = mysql_fetch_array($result))
{
echo("<donnee>".$row[0]."</donnee>");
}
echo("</exemple>");
?>
Quand je valide la ligne mise en commentaire (en gras) dans mon code Javascript, il m'affiche 0. Autrement dit, il n'a aucune donnée.
Mes infos de connexions sont correctes, de même que les noms de mes fichiers (je les ai vérifiés plusieurs fois).
Là je ne sais vraiment plus où j'ai fais une erreur.
Je débute en PHP et en javascript donc c'est peut-être une erreur toute bête...
Si quelqu'un pouvait me filer un petit coup de pouce ça m'arrangerait énormément.
Merci pour votre aide,
Heydrickx
Partager