Mise à jour régulière de la page

Résolu
aamsa
Messages postés
34
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2010
- 28 févr. 2010 à 14:10
cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
- 1 mars 2010 à 14:48
Bonjour a tous, j'ai codée une page php qui m'affiche les informations d'une base de données(Mysql),le code est le suivant:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<?
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'extracomm';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT nomsource,nomgroupe,date,message FROM journalextracomm';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);


// si on a récupéré un résultat on l'affiche.
if($total) {
// debut du tableau
echo '';
// première ligne on affiche les titres prénom et surnom dans 2 colonnes
echo '----

nomsource,
nomgroupe,
date,
message,
';
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_object($result)) {

$nomsource=$row->nomsource;
$nomgroupe=$row->nomgroupe;
$date=$row->date;
$message=$row->message;

echo \"----

$nomsource,
$nomgroupe,
$date,
$message,
\";
}
echo '
';
// fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($result);

?>
j'aimerais avoir comment je peut faire pour actualiser ma page chaque minute en utilisant la technologie AJAX.Merci d'avance
cordialement
aamsa

17 réponses

cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
28 févr. 2010 à 14:30
Salut,

Toutes les minutes -> setInterval
Mise à jour de la page -> innerHTML
Emission de la requête AJAX -> XMLHttpRequest/XMLHTTP.

Disons que le plus gros qu'il te reste à faire est en javascript, donc je déplace sur javascriptfr.com.

[ Déplacé sur javascriptfr.com ]
3
cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
28 févr. 2010 à 19:03
Indente ton code, il sera bien plus lisible ! C'était un problème d'accolades...

Pour débuguer les requête ajax et le javascript, j'utilisais FireFox + son extension FireBug.
Tu as bien sûr une console qui récupère les erreurs.
Tu peux faire du pas à pas dans le javascript, mettre des points d'arrêts...
Les requêtes ajax sont tracées : tu as les infos sur la requête et la réponse.


function go(){
  var xhr = getXhr()
  // On défini ce qu'on va faire quand on aura la réponse
  xhr.onreadystatechange = function() {
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    if(xhr.readyState 4 && xhr.status 200)
      alert(xhr.responseText);
    else
      return false;
  }

  xhr.open("GET","Journal.php",true);
  xhr.send(null);
}
3
cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
28 févr. 2010 à 20:14
C'est pas du code PHP, c'est de l'HTML !
Le PHP est langage de programmation exécuté côté serveur.
Le HTML est un langage de présentation traité par le navigateur.

Utilise InnerHTML (Dans un div ajouté dans ton body par exemple) pour mettre en place ce bout de HTML dans ta page. Il sera traité par le navigateur et ça t'affichera ton tableau.
3
cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
1 mars 2010 à 09:16
Bin vi !
Clique sur setInterval de ma première réponse.
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
1 mars 2010 à 11:25
Un lien c'est un lien, c'est fait pour les utilisateurs. Tu peux appeler go depuis setInterval.

<html><head><title>Test</title>
</head>
<script type="text/javascript">
<!--
var actif = window.setInterval("go()", 1000);

function go() {
  var container = document.getElementById('data_container');
  container.innerHTML += 'Kikoo
';
}
//-->
</script>
  


</html>
3
aamsa
Messages postés
34
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2010

28 févr. 2010 à 18:47
Merci pour votre aide, mais j'ai encore un pb avec ajax; j'ai crée un fichier(message.html)son code est le suivant:
<!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>message</title>
<script type="text/JavaScript">
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
e = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr
}
/**
* Méthode qui sera appelée sur le click du bouton
*/
function go(){
var xhr = getXhr()
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState 4 && xhr.status 200){
xhr.responseText;
else return (false);
}

}
}
xhr.open("GET","Journal.php",true);
xhr.send(null);

}
</script>
</head>


[# Lire les messages]

</html>
lorsque je clique sur le lien il me donne rien,
vous pouvez me dire où réside le problème??
cordialement
aamsa
0
aamsa
Messages postés
34
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2010

28 févr. 2010 à 19:40
lorsque j'exécute le script une message s'affiche contenant une mélange entre les donnes et le code php et pas l'affichage des des donnes seulement.
cordialement
aamsa
0
aamsa
Messages postés
34
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2010

28 févr. 2010 à 19:44
voila le message qui s'affiche lors le clic :
nomsource,

nomgroupe,

date,

message,

----

el haddouchi aamsa,

technico comerciale,

2010-02-26 11:12:00,

je travail avec le groupe des technico comerciles,

----

saloua,

developpement,

2010-02-25 12:00:00,

je suis saloua je travail avec le groupe des d�vloppeurs,

----

souad,

administrateur,

2010-02-24 10:00:00,

je suis souad je travail avec le groupe des administrateurs,

----

khadija,

design,

2010-02-23 23:00:00,

je suis khadija et je travai avec le groupe des designers
0
aamsa
Messages postés
34
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2010

28 févr. 2010 à 20:42
Oui comme vous avez dis, j'ai ajoutée un div et çamarche,mais lorsque je clic sur le lien les donnees s'affichent et le lien aussi s'affiche dans la page.
0
aamsa
Messages postés
34
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2010

28 févr. 2010 à 20:50
désolé pour le dérangement et si je vous dérange n'hésitez pas à me dire.
0
aamsa
Messages postés
34
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2010

28 févr. 2010 à 21:28
0
aamsa
Messages postés
34
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2010

28 févr. 2010 à 21:32
je veux que les donnees affichees dans le div soient rafraichis chaque minute. Est ce que vous avez une idéé sur ce truc? Merci d'avance
0
aamsa
Messages postés
34
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2010

1 mars 2010 à 10:55
comment on peut mettre un lien hypertex (disable)
en javascript, j'ai utilise cette méthode:
document.getElementById('idmsg').style.display="none";
mais le lien reste afficher dans la table.
cordialement
aamsa
0
cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
1 mars 2010 à 11:00
Je comprends pas. Tu n'as plus besoin du lien vu que tu as le rafraichissement automatique. Il suffit d'appeler directement la fonction go(). Donc plutôt que de ne pas l'afficher, tu peux l'enlever de ta page.
0
aamsa
Messages postés
34
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2010

1 mars 2010 à 11:19
c'estle lien qui fait appel à la fonction go().
cordialement
aamsa
0
aamsa
Messages postés
34
Date d'inscription
mercredi 16 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2010

1 mars 2010 à 13:09
Merci bcp ça marche bien, maintenant je veux que la date s'affiche selon chaque pays cèd(si j'envoie un msg à 8 du maroc le msg va s'afficher chez un autre utilisateure à 10 de la france par exemple)vous comprenez? est ce que vous avez des idées a propos ce sujet.
cordialement,
aamsa
0
cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
1 mars 2010 à 14:48
Pour une nouvelle question, il faut créer une nouvelle discussion.

Concernant ton problème, il me semble qu'il faudrait que le PHP du serveur envoie l'heure UTC/GMT au client. Ensuite, le javascript du client n'a plus qu'à créer une date en partant de l'heure UTC et en lui ajoutant l'offset récupéré avec getTimeZoneOffset
0