Jeg kunne godt tænke mig at se din database struktur.
Umiddelbart så virker dit script ikke hensigstmæssigt.
Prøv at poste din database samt tabeller
Umiddelbart så tror jeg nemlig det er din database struktur der forvirre dig lidt.
Prøv evt at se nedenstående opstilling
Chat_room
- id (A_I Primery) Den bruger vi til at holde styr på de forskellige rum
- name () Den bruger vi til at kunne vise et navn i stedet for et nr.
- timestamp () Altid en god ide at lave timestamps på de fleste tabeller for at kunne lave en sortering
(Du kan nemt tilføje flere, fx creater/auther for at kunne se hvem der har oprettet dem)
Chat_messages
- id (A_I Primery) Igen til at holde styr på beskeder
- auther () Hvem har skrevet beskeden - kan evt kædes sammen med en brugertabel
- message () Selve beskeden
- timestamp () den er vigtig, for når vi får ajax til at hente poster i denne tabel så skal den jo ikke hente de gamle hele tiden, men kun de nye.
chat_room_id () Her smides det id ind for den pågældende chat.
Når vi så har styr på vores database, så skal vi så kigge på hvordan vi kommer ind i de forskellige chat rum. Dette kan du gøre via url'en (altså en get metode), eller du kan bruge post via en form også blot have en input type hidden, eller du kan sætte det via en session variabel.
Nu skal du så bare vælge.
Når vi så har valgt det chatrum vi vil skrive i, så skal vi sørge for at have dennes id, enten i en af de tre førnævnte former (get, post, session). Den er nemlig vigtig når vi smider en besked i databasen.
Når du så behandler en besked, så sørger du for at chat_room_id smider du det id som chat rummet har. Resten burde du sagtens kunne.
For at vise beskederne skal vi også lige tænke os om. Der er to mulige scenarier. 1 - En ny besøgende. 2 - En eksisterende besøgende.
Hvis vi tager den nye besøgende så sørger vi for at have oprette en variabel med timestamp som er lig med nogle dage siden fx (Det kommer an på hvor mange du regner med der skriver i dine chatrum eller hvor længe beskederne skal ligge.). Så henter du alle beskeder som er liggger efter dette timestamp (altså er nyere), men kun de beskeder som har det chat_room_id som svare til det chat rum vi befinder os i. Når det så er hentet så opdatere vi vores tids varibel til nuværende tid.
Når vi så når til den eksisterende besøgende. Så er det blot at du tjekker om din variabel med timestamp er sat (Det er den når det er en eksitrende) også køre den samme sql som ved en ny besøgende.
Det betyder altså vi kan gøre noget i retningen af:
- if(isset($timestamp)){
- //Timestamp findes og det er derfor en eksisterende besøgende
- //Udfør SQL hvor den henter posts der er nyere end timestamp
- } else {
- //Sæt et timestamp (Husk at kalkulere med antal beskder), fx til i går
- //Udfør samme SQL som før.
- }
Håber det hjalp dig lidt.
Indlæg senest redigeret d. 24.02.2013 17:23 af Bruger #15663