Gå til innhold

PHP Chat. Fikse automatisk oppdatering


Anbefalte innlegg

Har lagd en chat i php. Den fungerer veldig bra bortsett fra at den ikke oppdaterer seg automatisk når en ny post er postet.

Har prøvd Javascript(grunnet det måtte jeg ha selve chatten i iframe for å ikke oppdatere hele sida), men da hopper iframet opp til toppen og det er ikke noe jeg ønsker.

 

Svar mottas med takk.

 

Koden for visning av chat:

<?php
include("mysql.php"); 
mysql_connect("$host", "$username", "$password") or die(mysql_error()); // Connect to MySQL server
mysql_select_db("$db") or die(mysql_error()); // Select MySQL Database
$sql="SELECT * FROM chat";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result)){
$fm = ereg_replace("", "<img src='smiley.jpg' border='0px'>", $rows['message'] );
?>
<p align="top"><? echo $rows['posted']; ?>: <? echo $fm; ?>
<?php
}
mysql_close();
?>

Lenke til kommentar
Videoannonse
Annonse

Jeg ville brukt jQuery hvis jeg var deg. Laget nylig en chat med det og det fungerer veldig bra.

 

Skal ikke poste hele kildekoden her, men kan poste hvordan jeg sender inn melding og hvordan jeg mottar:

 

Når bruker sender inn melding:

 

#chat er input feltet.

function sendMessage()
{

   $.post("<?php echo site_url('chat/process'); ?>",{ 'message' : $("#chat").val() },
   function(data) {
       if(data.result == 'success')
       {
           $("#chat").val(""); 
           getMessages();  
       }
       else if(data.result == 'loggedout')
       {
           $('#msg-messages').prepend("<strong>Ooops.. It seems you are logged out. Please login again.<br/></strong>");
       }
       else if(data.result == 'toolong')
       {
           $('#msg-messages').prepend("<strong>Message too long!<br/></strong>");
       }

   }, "json");

}

 

Når bruker skal hente ut meldinger

 

#msg-messages er hvor alle meldingene vises.


function getMessages()
{
       $.post("<?php echo site_url('chat/retrive'); ?>",{ 'timestamp' : timestamp },
       function(data) {
       if(data.result == 'success')
       { 
           $('#msg-messages').html(data.html);
           timestamp = data.timestamp;
       }
       else
       {   // debug
           alert('sorry it failed'+data.result);
       }
   }, "json");
}

 

Fordelen her er at hele websiden ikke trenger å oppdatere seg og chatten vil pinge serveren f.eks en gang i sekundet (eventuelt raskere) etter nye meldinger. Med en gang ny melding er kommet inn blir chatten oppdatert.

 

Jeg er nybegynner på jQuery, så skal ikke garantere at dette er den mest optimale løsningen jeg jobber fortsatt med chatten. Men det er i hvertfall en god start vil jeg tro.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...