Problème d'affichage de données en temps réel

Petit nouveau ! | 3 Messages

04 avr. 2012, 15:44

Bonjour,

J'ai un problème de reception de donnée. En effet, j'ai deux page php, la première permet de se connecter et de recevoir des données de la BDD (page qui fonctionne). Mais le problème viens de la seconde page, je souhaite recevoir en temps réel ces données.
Pour cela j'utilise l'AJAX et le XMLHttpRequest, mais quand je fais appel à la seconde page rien ne se passe (Page Blanche !).
Je ne voyais pas le problème jusqu'à ce que je comprenne un peu le soucis, je ne faisais pas un appel de fonction. Mais toujours rien, j'utilise donc l'appel de données (php) afin d'afficher les données. J'ai encore une erreur, et la je ne sais pas pourquoi.

Si vous avez une idée je suis preneur.
Voici mes deux page :

1er est la page de conéxion à la BDD
<?php
//
// Verification de données
//    
$serveur = "localhost";
$base = "passilab";
$utilisateur="root";
$motdepasse="";
// CONNECION SQL
mysql_connect($serveur, $utilisateur, $motdepasse)or die("erreur de connexion au serveur");
mysql_select_db("passilab")or die("erreur de connexion a la base de donnees");

// VERIFICATION
$requete = 'SELECT * FROM table_mesure';  
$resultat = mysql_query($requete); 
          
while($row = mysql_fetch_row($resultat))
{
  if($row = mysql_fetch_row($resultat))
  {
     $id = $row[0];
     $endroit = $row[1];
     $emplacement = $row[2];
     $nom_capteur = $row[3];   
     $date_heure = $row[4];
     $valeur = $row[5];
     echo "$id<tr><br>
     $endroit<tr><br>
     $emplacement<tr><br>
     $nom_capteur<tr><br>
     $date_heure<tr><br>
     $valeur<tr><br><br>" ;
  }
   else
   {
       echo "erreur!";
   }
}         
?>
La seconde page contient mon script AJAX/XMLHttpRequest

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">    <head>
<title>TEST temperature</title>
        
<script type="text/javascript">
function readdiv(texte) 
{
    document.getElementById('Temp').innerHTML = texte;
}
        
function veriftemperature(temperature)
{
  if(temperature !='')
  {
     readdiv("Donnée Incorrecte");
        	
     else if(texte = file('./connectionBDD.php?endroit='+escape(endroit) +'?emplacement='+escape(endroit) + '?nom_capteur'+escape(nom_capteur) + 'date_heure'+escape(date_capteur) + '?valeur'+(valeur) )
      {
        if(texte==1)
        {
            readdiv('+endroit+');
            readdiv('+emplacement+');
            readdiv('+nom_capteur+');
            readdiv('+date_heure+');
            readdiv('+valeur+');
        }
        	else
        	readdiv(texte);
        	}
        	}
        }
        
function file(fichier)
{
   if(window.XMLHttpRequest) // FIREFOX SAFARI etc.....
   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) && (xhr_object.status == 200)) return xhr_object.responseText;
   else return(false);
}
</script>
</head>
<body onload='veriftemperature();'>
<?php echo $id .":<b>".$emplacement.":<br> ".$nom_capteur.":<b>".$date_heure.": <br>".$valeur." :<br>";
?>
</body>
</html>
Merci par avance

ViPHP
xTG
ViPHP | 7331 Messages

04 avr. 2012, 15:59

Ton souci c'est la compréhension des requêtes asynchrones.
Tu envoies la requête et tu testes aussitôt le résultat. Mais le souci c'est que tu ne l'as pas encore reçu. ;)
Il faut utiliser une fonction de callback pour faire fonctionner tout ça (qui va se déclencher lorsque l'état de la requête asynchrone est modifiée par exemple).

Petit nouveau ! | 3 Messages

04 avr. 2012, 16:21

Bonjour xTG,

Dans un premier temps je tiens à te remercier pour ta réponse.
Dans un second temps, je ne connais pas cette fonction callback (fais quelque recherche grace à toi ^^ ).
Dis moi si je me trompe, je dois faire appel à mes variable dans le callback?
Si je fais cela:
exemple
function afficher($donnee)
{
if($donnee == 'endroit')
{
return $donnee;
}
}

ViPHP
xTG
ViPHP | 7331 Messages

04 avr. 2012, 19:56

Voici un peu de documentation sur le sujet : http://gael-donat.developpez.com/web/intro-ajax/#LII-B :)

Petit nouveau ! | 3 Messages

05 avr. 2012, 09:49

Bonjour xTG,

merci pour le lien. Il m'a bien aidé.