Henviser til en anden tråd.

Tags:    ajax

Hej,

Nu spørger jeg lige igen, eftersom den anden ikke gav respons.
Er der slet ingen der kan eller vil hjælpe med evt. imod betaling.
Alt efter din pris for at få den sat i sving.

Tråd


--
Problemet er hvis jeg poster nu i det jeg har rettet til nu. Så poster den chat beskeden i alle 3 rum. Altså alle de rumIDér der findes i db tabellen.

Så hvordan løser jeg så den kun poster i det rumID jeg befinder mig i.?

Fold kodeboks ind/udPHP kode 


Og det det andet forsøg, uden while. Så vil den ikke skifte i tabs.


Fold kodeboks ind/udPHP kode 


Der blev fjernet en while + }

Hvis du samligner begge koder, kan du se hvilken der er fjernet.

Det jo pga. whilen der poster til alle med i den while. Men nu vil den bare ikke skifte i tabs.

LØSTE PROBLEMET således.:)
Men er det godt nok?.

Fold kodeboks ind/udPHP kode 


Sat name="rum" i inputten hvor den udskriver rumID korrekt. Så tænkte jeg, hvis jeg kan få den i value, kan jeg vel også få den ind i name="rum"..

Men er det ok?.



Indlæg senest redigeret d. 24.02.2013 14:16 af Bruger #17475
3 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 27 karma
Sorter efter stemmer Sorter efter dato
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:
Fold kodeboks ind/udPHP kode 


Håber det hjalp dig lidt.



Indlæg senest redigeret d. 24.02.2013 17:23 af Bruger #15663
Alle de der timestamps er unødvendige når du har et unikt autoinkrementeret id...sorter efter det eller filtrer alt væk, som er mindre end eller lig med det seneste, du har modtaget.
Forestil dig følgende:
* På timetamp X beder du om alle beskeder...dem får du
* Et halvt sekund senere (altså samme timestamp) kommer der en ny besked

Hvordan får du den seneste besked uden også at "risikere" at få beskeder, som du allerede har modtaget?

IDet er bedre til den slags.



Grunden til alle de timestamps var mere for ikke at have alt for gamle beskeder liggende og de derved kunne slettes via et cron job.



t