PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Chat mit PHP realisieren



pousty
08.07.2010, 17:22
Hallo,

seit einiger Zeit beschäftige ich mich schon mit PHP und wollte nun mal einen Chat realisieren. Er soll eigendlich ganz einfach sein.

Ich bin so vorgegangen:

1. ein formular zur eingabe des Textes
2. per submit wird ein eintrag in die datenbank gemacht
3. nachricht erscheint in einem div unterhalb des eingabefeldes

Nur leider bin ich auf folgende Probleme gestoßen:

Abgesehen davon dass ich sicher nen cronjob oder sowas machen werde damit die einträge mit der zeit auch wieder gelöscht werden, werden die daten aus der datenbank nur EINMALIG per Seitenaufruf aktualisiert. Wenn ich nen Refresh Tag einbaue, refresht sich leider auch die ganze Seite mit. Mit dem Submit Formular ist das das gleiche. Da läd auch die ganze Seite nochmal neu.

Wie schaff ich es also dass immer wenn ein neuer eintrag in die datenbank gemacht wird, dass der client auch etwas davon mitbekommt und sich der chat aktualisiert (ohne hässlichen refresh von der ganzen seite).

wäre nett wenn ihr mir helfen könntet.

P.S. will kein fertiges script irgendwo runterladen.

Danke mfg pousty

Starflow
08.07.2010, 17:29
Ich werf einfach mal das wörtchen "Ajax (http://de.wikipedia.org/wiki/Ajax_%28Programmierung%29)" in den Raum ;)

Is zwar kein PHP aber allein mit PHP wirst du das nicht realisieren können Ajax ist da die Optimale Lösung

Perishand
08.07.2010, 17:47
Genau, deswegen brauchst du auch keinen Cronjob. Lade die Informationen per Ajax einfach nach, dann ist so ein Chat kein Problem mehr.

Notorious
08.07.2010, 18:15
Naja mit PHP könnte man das auch machen.

1. Textbox erstellen
2. Eine div box unterhalb der Textbox erstellen
3. Ein javascript reinpacken das es immer aktualisiert
4. Ein submit button
und fertig

Also so stell ich es mir vor.

Perishand
08.07.2010, 18:22
Also benutzt du eine Art Ajax, du kommst um Ajax nicht herum.

pousty
09.07.2010, 21:52
Danke für die Infos, aber nach langem Suchen im Netz und nach mehreren Tutorials, habe ich es nicht geschafft, wenigstens ansatzweise irgendwas hinzukriegen. Nichts stimmt mit dem überein, was ich machen möchte.

Ich bräuchte lediglich eine abfrageschleife, die alle paar sekunden die datenbank nach neuen einträgen überprüft. Dies auch ohne, dass die komplette Seite neu lädt.
Das können doch eigentlich nicht soviele Codezeilen sein, oder? hat nicht jemand sowas wie ein muster?

Danke

pousty

Apex
09.07.2010, 22:00
devblog.de Tutorial: Shoutbox als AJAX-Anwendung (http://www.devblog.de/index.php/archives/2005/11/10/52/)

Anschauen, verstehen, selber schreiben!

pousty
10.07.2010, 11:21
danke, das tut hat mir wirklich geholfen..jetzt hab ich aber ein anderes problem. immer wenn man seine nachricht submittet dann ist der komplette chat history für ein paar sekunden weg..und läd neu..kann man das iwie unterbinden..dass er erst wenn alles geladen ist die history mit der neuen nachricht anzeigt? sone art preload oder so..

Apex
10.07.2010, 11:29
Das die Histroy weg ist, ist normal. Er ladet ja die komplette Shoutbox neu. Ansonsten müsstest du den preload ans Ende setzen.

//Edit: Musst dir das hier:



//aktuelle Daten laden
loadData();

//alle 5 Sekunden neue Daten holen
setInterval("loadData()",5000);


und das hier anschauen:


function loadData()
{
if (xmlHttp) {
xmlHttp.open('GET', 'getdata.php', true);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
document.getElementById("asb_content").innerHTML = xmlHttp.responseText;
}
};
xmlHttp.send(null);
}
}

Computerbastler
10.07.2010, 12:14
naja suche auch php chat aber mit webcam solte ganz esay sein und über red5 server laufen wenn ihr ide habt könnt ihr mit ja helfen ^^

kalachnikov
10.07.2010, 13:37
na ja so Ressourcenschonend ist das mit dem Reloaden der Seite auch nicht, stell dir mal vor du ladest den Chat irgendwo auf einen Server in Afrika hoch. Das kann also etwas dauern bis du dann eine Antwort vom Server bekommst..

pousty
11.07.2010, 17:28
ich finde leider keinen preloader im internet der zu meinem problem passen könnte. nur für bilder scheint es sowas zu geben.

Ich sitze schon seit einigen stunden daran..es will nichts klappen..

c4pone
13.07.2010, 09:28
Warum läßt du das ganze überhaupt über eine Datenbank laufen mach es doch mit Sockets ?

Barbers
13.07.2010, 10:20
es gibt nen chat der alein mit php und java script läuft, ist aber net so dolle

Draik
13.07.2010, 10:28
evtl hilft dir das:
RapidShare: 1-CLICK Web hosting - Easy Filehosting (http://rapidshare.com/files/406683125/airchat.tar.bz2)

s1ckST4R
13.07.2010, 10:29
Ich würde behaupten, das du dir nochn bischen Java aneignest, und dich nicht nur auf PHP versteifst, weil selbst wenn du dein chat hinbekommen hast, wirst du immer wieder sachen finden wo du verbessern,erneuern oder Verändern willst is normal nachm Programmieren (jedenfalls bei mir). Und PHP is kein allround killer xP.
s1ckST4R

pousty
13.07.2010, 16:03
also, wenn ich jetzt mal so die kommentare zusammenfasse, dann kann man sagen, dass ein php chat nicht so dolle ist? warum denn nicht? zu hoher traffic? ich hab ne traffic flatrate und ich denke mal dass maximal 20-30 user mal gleichzeitig miteinander chatten werden, aber dass auch nicht 24/7.


Ich würde behaupten, das du dir nochn bischen Java aneignest
ist das nicht so schwer oder wie? wie lange würde es dauern, wenn jemand der ahnung davon hat das gegen bezahlung machen würde? und wie hoch wäre das honorar? :)
und wie lange würde es dauern, wenn jemand wie ich, der keine Ahnung von Java hat, dass schreiben müsste? :)

mfg pousty

Apex
13.07.2010, 16:07
Java ist jetzt nicht gaaaaanz so schwer, aber man muss aufjednefall die Logik dahinter verstehen. Ansonsten Ajax Shoutboxen (Ist sogesehen Java) dürften deinen Wunsch erfüllen und sind einfach viel schöner. Schau dir im Internet mal eine PHP Shoutbox und danach eine Ajax Shoutbox ein.

Kommt darauf an, wie schnell man lernt. Am Anfang sollte man natürlich die Basics lernen. Aber du kannst ja immernoch nachfragen, wenn du Probleme hast.

Soulstah
13.07.2010, 16:17
http://www.pcpin.com/ (http://free-hack.com/www.pcpin.com/)
Schau dir des mal an ^^

stan1986
14.07.2010, 08:19
Ansonsten Ajax Shoutboxen (Ist sogesehen Java) dürften deinen.

Was hat Java mit Ajax zu tun?? Bei Ajax ist das Zauberwort JavaScript, aber nicht Java.

Soulstah
14.07.2010, 10:52
hier noch ne schoene ShoutBox mit allem was man braucht !
kannst es dir ja anschaun wie es aufgebaut ist und es dann versuchen ;)
RapidShare: 1-CLICK Web hosting - Easy Filehosting (http://rapidshare.com/files/406882787/NCXCyshout_5_ajax_by_digzip.rar)

MIRROR:


x7.to » Download: NCXCyshout_5_ajax_by_digzip.rar (http://x7.to/h8agem)

QOOY - Pick your file host - Download - YShout_5___Ajax_by_modeman.rar (http://www.qooy.com/files/BILSHJTI/YShout_5___Ajax_by_modeman.rar)

Download: NCXCyshout_5_ajax_by_digzip.rar | xup.in (http://www.xup.in/dl,11682077/NCXCyshout_5_ajax_by_digzip.rar/)

Download: NCXCyshout_5_ajax_by_digzip.rar | xup.in (http://www.xup.in/dl,41090534/NCXCyshout_5_ajax_by_digzip.rar/)Download: (http://www.xup.in/dl,32113092/NCXCyshout_5_ajax_by_digzip.rar/)

NCXCyshout_5_ajax_by_digzip.rar | xup.in (http://www.xup.in/dl,32113092/NCXCyshout_5_ajax_by_digzip.rar/)


Soulstah ;)

pry0
10.08.2010, 21:50
Hi,
habe jetzt kurz die erste Seite durchgelesen und bin der Meinung, dass es so scheint, das eine Lösung ohne Ajax kaum möglich ist, jedoch könntest du probieren, um die Nachrichten anzuzeigen indem du die Nachricht in Bereichsvariablen speicherst und diese beim Submitt'n einer neuen Nachricht über eine foreach-Schleife auslesen lässt.

MfG

Malw0rm
14.08.2010, 16:29
Prototype JavaScript framework: Easy Ajax and DOM manipulation for dynamic web applications (http://www.prototypejs.org/)

Vorgefertigtes AutoReload und wenn du das alles nochn bisschen stylen willst:

script.aculo.us - web 2.0 javascript (http://script.aculo.us/)

Deoxys
14.08.2010, 16:39
phpFreeChat - Web2.0 AJAX free chat server - Latest news (http://www.phpfreechat.net/)

Malw0rm
14.08.2010, 16:41
phpFreeChat - Web2.0 AJAX free chat server - Latest news (http://www.phpfreechat.net/)

Er will ihn selber coden, nix vorgefertigtes ;)

Deoxys
14.08.2010, 16:45
Er will ihn selber coden, nix vorgefertigtes ;)
Ist aber ne gute Basis um daran zu lernen oder ihn zu modden ;)

Malw0rm
14.08.2010, 16:46
Ist aber ne gute Basis um daran zu lernen oder ihn zu modden ;)

Dann ist dieser
https://blueimp.net/ajax/
aber besser ;)

Deoxys
14.08.2010, 16:49
Dann ist dieser
https://blueimp.net/ajax/
aber besser ;)
Muss ich dir zustimmen. Hat eindeutig mehr Style und Funktionen.

ultimate1337
14.08.2010, 20:38
ich empfehle dir anstatt polling, long polling
d. h. der Server hält die Requests so lange in einer Sleep-Schleife, bis ein Event, in deinem Fall eine neue Chat-Nachricht auftritt.

Dadurch erhälst du eine akkurate Aktualisierungsrate, jedoch leidet die Skalierbarkeit
sehr darunter wenn du die Requ. länger als 30 Sec. zurückhälst.

Google mal nach Ajax und Comet.
Das sind die zwei wichtigsten Dinge die du dafür brauchst.

Hoffe ich konnte helfen,

Mfg

mhjwh12
17.08.2010, 17:11
Du könntest theoretisch aber auch deinen Chat in ein <iframe> auf deiner Seite einbetten. Dann könntest du machen, dass sich nur der Chat neulädt. Ganz optimal ist das aber auch nicht. Ich würde dir aber trotzdem AJAX empfehlen.