2010-11-18 6 views
2

J'ai une insertUpdate.php les lignes de table dans la base de données MYSQL insérer,Comment déclencher un rafraîchissement (rechargement) de la page .php lorsqu'une nouvelle entrée de base de données est ajoutée?

<?php $userid=$_POST["userid"]; $timestamp=$_POST["timestamp"]; $addALine="INSERT INTO myDatabase (userid,timestamp) VALUES ('$userid','$timestamp')"; 
$intoDatabase=mysql_query($addALine); ?> 

et un showUpdate.php qui montrent la table comme une page Web,

while ($latestRow=mysql_fetch_row($result)) 
{ $data .= "<tr><td>".$latestRow[0]." </td><td> ".$latestRow[1]."</td></tr>\n"; 
} 

Je ne veux pas définir un rafraîchissement automatique toutes les quelques secondes comme <?php header('Refresh: 8'); ?>.

Comment déclencher un rafraîchissement/rechargement de showUpdate.php lorsqu'une nouvelle entrée dans la base de données est insérée par le composant insertUpdate.php? Merci pour toute aide!

+0

utilisez-vous une bibliothèque js? jquery? –

Répondre

3

Les pages Web sont sans état. Une fois que vous avez envoyé la réponse, tout est terminé.

Si vous voulez qu'une page Web découvre un nouvel enregistrement, il devra interroger le serveur pour demander s'il y a de nouveaux enregistrements. Vous ne pouvez pas envoyer une notification du serveur à une page desservie.

+0

Mais avec HMTL5 vous pourrez bientôt. WebSockets et événements de fenêtre ... –

0

Vous pouvez interroger la base de données en utilisant AJAX (en arrière-plan) et actualiser la page lorsqu'une nouvelle entrée est ajoutée.

Étant donné que http est un protocole sans état, il n'y a pas d'autre option que l'actualisation ou l'interrogation.

0

Utilisez XMLHttpRequest pour conserver l'état de la page.

setInterval(function(){ // every 10 seconds 
    // using jQuery 
    $('#container').load('/showUpdate.php'); // load php page into #container 
}, 10000); 

Il n'y a aucun événement dans une page Web où la base de données a changé.

Questions connexes