Forum
Tipps
News
Menu-Icon

Chat

Hallo,

ich möchte gerne einen Chat programmieren in PHP.

Bin jetzt auch schon soweit, dass der Text in die MySQL eingetragen wird und auch ausgegeben wird.

Nun habe ich das Problem, dass sich eben der Chat-Inhalt nicht automatisch aktualisiert, sondern nur wenn ich entweder auf F5 drücke oder selbst etwas poste.

Gibt es dafür einen Befehl, dass sich der Chat-Inhalt von selbst z.B alle 10 Sekunden von selbst aktualisiert?


Kann mir jemand weiterhelfen?


Vielen Dank im Voraus


MfG
Dommschwenker


Antworten zu Chat:

Nabend,

naja, mit Php geht das glaub ich nicht, aber du kannst es mit einem meta befehl machen. diesen schreibst du in den head-teil deines scripts. das ganze könnte dann zB so aussehen:


<html>

<head>

<title>Refresh</title>

<meta http-equiv="refresh" content="10" URL="refresh.html" />

</head>

<body>

Refresh in 10 Sekunden.

</body>

</html>


Mit content="10" gibst du Sekundenanzahl an, nach denen refreshed wird. Bei URL musst du den Seitennamen eingeben, der geladen werden soll, also beim refresh den namen der gleichen datei, in der der metabefehl drinnesteht. Ich glaub es geht auch mit Javascript, aber ka wie, so dürfte denk ich mal reichen.
« Letzte Änderung: 03.10.06, 21:56:01 von Guuul »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hi |

Guuul hat das schon genau richtig beschrieben. Folgendes wäre dazu aber noch zu sagen:

Wenn du alle paar Sekunden die ganze Seite neu lädst, dann erzeugst du damit recht hohen Traffic. Serverseitig ist das vielleicht noch ok, aber der User wird sich das sicher nicht allzu lang mit angucken. Deswegen solltest du am besten die Nachrichten in einem gesonderten Frame oder Inline Frame anzeigen und dann auch nur diesen neu laden.

Eine schöne Alternative stellt auch der Einsatz von Ajax dar. Das könntest du recht gut mit deiner PHP-Applikation verbinden.

greez 8)
JoSsiF

Hab noch was interessantes zum thema nachladen gefunden, es geht doch mit php:  http://www.drweb.de/php/php_frames.shtml , basiert auf cookies, wenn ichs recht verstanden hab.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hast du den Artikel auch gelesen? Da geht's darum, ein Frameset zu erzwingen, falls jemand eine ins Frameset eingebettete Seite als Standalone aufrufen will. Hat also mit dem Thema hier nichts zu tun ;)

greez 8)
JoSsiF

eehem  ;D *räusper*  ::)

//edit:

Ich möchte mich jetzt auch mal an einem PHP/MySQL-Chat versuchen, und es stellen sich mir einige Probleme und so. Den Chat möchte ich so aufbauen: Es gibt ein Hauptfenster mit tippfeld und einen inline frame, der immer alle 8 sekunden oder so refreshed. wenn man eine nachricht in das tippfeld eingibt, wird diese in eine mysql datenbank geschrieben (mit datum). allerdings möchte ich, dass im iframe immer nur die 20 neuesten nachrichten angezeigt werden, werden es mehr als 20, so sollen die vorherigen in eine textdatei geschrieben und die einträge aus der datenbank gelöscht werden, so dass im iframe dann wieder nur 20 angezeigt werden.

nur, wie mach ich das, dass immer bei einer überschreitung der 20 nachrichten die übrigen in die datei geschrieben werden (mir geht es um den mysql befehl, nicht darum, wie man etwas in eine datei schreibt)?

« Letzte Änderung: 04.10.06, 21:17:06 von Guuul »

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Ich habe mich schon desöfteren mit dem Problem auseinander gesetzt. Am einfachsten (und ich kenne auch keinen anderen Weg) ist es wohl in einer Schleife, in dem Beispiel hab ich eine While-Schleife genommen:

Hier der Code

<?php

	
$msg_ergebnis mysql_query("SELECT * FROM `tabelle` ORDER BY `datum`");
	
// nach Datum sortieren, damit nur die ältesten gelöscht werden
	
$maxmsg mysql_num_rows($msg_ergebnis);
	
// Anzahl der Nachrichten auslesen
	
	

	
$z $maxmsg 20;
	
// nur die aktuellsten 20 Nachrichten behalten
	
while(
$z 0)
	
{
	
	
mysql_data_seek($msg_ergebnis, ($z-1));
	
	
$msg_deldates mysql_fetch_row($msg_ergebnis);
	
	
// hier die Daten eines alten Eintrags auslesen, damit man ihn beim löschen genau bestimmen kann
	
	
mysql_query("DELETE FROM `tabelle` WHERE `wert1` = &#39;".$msg_deldates[0]."&#39; AND `wert2` = &#39;".$mgs_deldates[1]."&#39;;");
	
	
// Eintrag löschen
	
	
$z $z 1;
	
	
// Schleife fortsetzen bis 0, dann sind alle älteren Einträge gelöscht und nur die aktuellen 20 in der Datenbank
	
}
	

?>


In die Schleife muss dann natürlich noch der Algorithmus zum "alte Beiträge in Textdatei schreiben". Den kannst du ja, wie du sagst ;)

cool, sehr schön, genau so muss das sein  :D
vielen dank; joa, das mit den dateien dingens dürft ich hinbekommen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Da hat aber der Server ganz schön zu tun, wenn ordentlich Last aufkommt ;)

Die ältesten Nachrichten (nehmen wir mal an, alle außer den neuesten 20) bekommst du viel einfacher, nämlich mit einem einzigen SQL-Statement:

SELECT * FROM your_table WHERE a_timestamp <
(SELECT MAX(a_timestamp) from your_table ORDER BY a_timestamp asc limit 20) ORDER BY a_timestamp

Das war jetzt mit Subselect, den gibt's in MySQL glaub ich erst seit Version 4.1. Sollte sich aber auch durch einen Join (nein, das ist nichts zum Rauchen ;D) ersetzen lassen.

greez 8)
JoSsiF

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Ja ok, mein Code war auch weniger für einen Chatroom angefertigt sondern für ein Nachrichtensystem, so wie die PNs hier bei CH. Da wird auch nicht sekündlich eine Nachricht verschickt ;)

Außerdem sollten ja die alten Nachrichten gelöscht werden, nicht nur die ältesten 20 ausgesucht.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Außerdem sollten ja die alten Nachrichten gelöscht werden, nicht nur die ältesten 20 ausgesucht.

Nochmal lesen! ;)

Nur die ältesten 20 raussuchen wäre ja keine Kunst :)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo,


Vielen Dank für eure schnellen und hilfreichen Codes und Links etc.


Habs durch <meta...> gelöst.

Chat funktioniert jetzt super.


MfG
Dommschwenker

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo,

ich habe da noch eine Frage zum Chat, gibt es eine Möglichkeit z.B. den Benutzernamen bei dem Einloggen auf dem PC (bei anderen Nutzern auf deren PC) zu speichern, damit ich mit dem Script diesen Abfragen kann?

Vielleicht über?
Datei?
setcookie (bitte mit beispeil-script)?



Vielen Dank im Voraus

MfG
Dommschwenker


« [freeweb.de] SupportWeiterleitung? »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Snapchat
SnapChat ist eine kostenlose Messaging-App, mit der - ähnlich wie bei WhatsApp oder dem Facebook Messenger - Nachrichten an andere Personen oder Gruppen gesendet wer...

PHP
PHP steht für Personal Home Page und ist eine Skriptsprache die meist verwendet wird zur dynamischen Erzeugen von Internetseiten. PHP zeichnet sich durch die weite D...

Hypertext
Hypertext ( zu Deutsch: Übertext) ein ein von dem Informatiker Theodore L. Nelson in den sechziger Jahren geprägter Begriff für Text, der dreidimensional g...