Hej.. kan det lade sig gøre at lave sådan at når mysql bliver opdateret så opdater den også ved brugeren... altså for at lave sådan at når de får en ny intern besked så dukker den op med det samme...
Der er en meg fast regel (client/server) om at det ALTID skal være client (dvs browseren på brugerens computer) der skal give kommando når noget skal ske. serveren må kun svare når den bliver spurgt. den må ikke selv starte noget.
For at kommer rundt om det er der forskellige muligheder: 1) du kan lave dit script i browseren så den spørger igen og igen (fx hvert 5'te sekund) om der er sket noget siden sidst (det er som regel det man gør når man laver en chat) 2) du kan oprette en lille server på brugernes computer som web-serveren så kan lege client for (det er sådan ICQ gør). Det kræver at der installeres et program hos brugere, og virus-paranoide som vi er er det svært at få lov til.
spørg serveren om der er sket noget siden sidst. hvis ja, reload denne side.
for at spøge 'siden sidst' må brovseren have en måde at fortælle severen hvornår sidst var. det kan fx gøres ved at lægge et timestamp i databasen hvergang du opdatere, og samtid fortælle siden hvad det nuværende timestamp er hvergang siden bliver genereret med php:
læge nedenstående i den side der skal opdateres når databasen bliver opdateret:
<script type='text/javascript'> <!-- // et sted i <head på din side. <?php // sørg selv for at du er connected til din database. $res = mysql_query( "SELECT MAX( tidfelt ) FROM dintabel" ) or die(mysql_error()); $lastupdate = mysql_result( $res, 0, 0 ); // kræver mindst een record i dintabel echo "var sidstOpdateret = '$lastupdate';\n"; ?> var sporgeBilled = new Image();
function loadNyt() { // genhent denne side med nye data fra databasen. self.location.reload(true); }
Og lav en lille extra fil med navnet 'testfornyt.php' der kun indeholder php-kode: <?php // sørg selv for at du er connected til din database. $res = mysql_query( "SELECT MAX( tidfelt ) FROM dintabel" ) or die(mysql_error()); $lastupdate = mysql_result( $res, 0, 0 ); // kræver mindst een record i dintabel
if ( isset( $_GET['sidst'] ) $sidst = $_GET['sidst'];
if ( $sidst == $lastupdate ) { // ingen ændringer. alt er ok $filename = "mini_gif_som_ikke_findes.gif"; // giver fejl, så onload ikke bliver sand } else { // siden trænger til at blive opdateret $filename = "mini_gif_som_findes.gif" // aktiverer onlpad i sporgeBilled hos brugeren }
gif billedet "mini_gif_som_findes.gif" skal være lille, fx et 1*1 pixel billede
mvh JakobA
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.