AW3423DW QD-OLED - Ryzen 5800x - MSI Gaming Trio X 3090 - 64GB 3600@cl16 - Samsung 980 Pro 2TB/WD Black SN850 2TB
PM-system ( PHP / Ajax / MySQL )
Hallå där du som orkar läsa!
Jag håller på att bygga det nya Facebook!
Skämt åsido...
Har byggt ett litet community med en väldigt simpel och bristfällig PM-funktion där man kan skicka PM till en annan user genom att gå in på dennes profil och skicka via formuläret där.
Det jobbiga är ju att när man går in i sin inkorg och läser meddelandet så kan man liksom inte svara där direkt, utan man får gå till medlemmens profil igen och fylla i formuläret.
Lagom användarvänligt med andra ord =D
Så jag har funderat (och sökt runt lite på nätet) på hur jag skapar en konversation, så att man kan ha allt samlat helt enkelt.
Har provat att hämta datan med Ajax/jQuery och det blir ju real-time och man slipper refresha osv men jag kan fan inte komma på hur jag ska "starta" en konversation mellan två specifika users och ha alla meddelanden samlade efter varandra, som en chatt i Messenger alltså.
Detta är säkert jättesimpelt att fixa för den som är lite mer erfaren i SQL/Programmering överlag men jag får inte till logiken i skallen än.
Som det är nu så är inte user-tabellen relaterad till message-tabellen i alla fall.
Tidsstämpel och relationer låter som något användbart i det här fallet. Typ spara ett user_id på meddelanden men även tidsstämpel så du kan sortera arrayen efter tid.
Du skulle kunna ha message-tabellen på följande vis:
id, parent_id, from_user_id, to_user_id, message, timestamp
Sätt parent_id till 0 om det är en ny konversation. Om det istället är ett svar på ett tidigare meddelande så sätter du parent_id till meddelandets ID. from_user_id och to_user_id är ganska självbeskrivande (går säkert att hitta bättre namn på dom), och de kan skifta mellan meddelandena i konversationen. parent_id kanske kan döpas till reply_to_id om det är lättare att förstå vad den hänvisar till.
Om du vill kunna skala dina meddelanden så gör följande:
"messages" table: standard grejer, id/message/user_id/timestamp
"conversations" table: id/timestamp
"conversation_user" table, id/conversation_id/user_id/timestamp
Vill du skala det till att fungera som t.ex. slack lägger du till en ny tabell kallad t.ex. threads som tillhör conversations. Svarar en användare på ett specifikt meddelande i konversationen så skapas en tråd som tillhör konversationen, och alla meddelanden som svarar på det meddelandet hamnar i tråden istället. På det sättet får du mer en
- Meddelande 1
- Meddelande 2
- Meddelande 3, svar till meddelande 2
- Meddelande 4, svar till tråden
- Meddelande 5 (svarade inte på tråden) etc
Göra på det här sättet gör det också enkelt att stöda ett oändligt antal användare i samma konversation (kan vara bra att kunna t.ex. bjuda in folk till en konversation osv)
Se bara till att sortera enligt timestamps så kommer datan när du ritar ut den fungera perfekt. Upp till dig på vilket sätt du vill stöda trådar (om du ens vill det), finns många sätt att göra det på.
- Idag Iphones marknadsandel faller i USA 26
- Igår Airtec Pro Type1 – batteridrivet alternativ till tryckluft på burk 59
- Igår Nu stiger hårddiskpriserna med uppemot 10 procent 15
- Igår Analytiker: Apple har överskattat intresset för Vision Pro 51
- 24 / 4 AMD, Nvidia och Intel – vad är det för skillnad mellan grafikkortstillverkarna? 31
- Premier League säsong 2023/202434
- SFW! Känn doften av nyklippt gräs med Dreame Roboticmower A133
- Microsoft rullar ut Startmenyreklam till alla68
- Fedora 401
- Konsumentverket granskar tio nätbutiker som lurat kunder16
- Dator toppar på 100°C vid spel eller annan krävande aktivitet1
- Tråden om Xbox Series X|S7517
- Köpa mesh8
- Simulator - hjälp/tips på bildförskjutning sökes19
- Elbilar - Tråden för intresserade23182
- Säljes Kingston PCie 4.0 NVMe M.2 4TB 7300MB/s
- Säljes i3-8100
- Köpes Luftkylning och Fläktar
- Köpes Nvidia Quadro P400,600 eller 620
- Säljes Dell Latitude 7530 15,6”
- Köpes Önskar köpa 6700xt eller 3070
- Säljes Asus Geforce RTX 2070 8GB Strix Gaming OC
- Köpes Köper bärbara datorer, trasiga, utan skärm etc.
- Säljes Lenovo Thinkcentre M73
- Säljes Lenovo Legion Slim 5 14” OLED
- Därför blockerar Windows 11 24H2 Start‑menyhack10
- Iphones marknadsandel faller i USA26
- Konsumentverket granskar tio nätbutiker som lurat kunder16
- Airtec Pro Type1 – batteridrivet alternativ till tryckluft på burk59
- Nintendo-innehåll tas bort från Garrys Mod24
- Nu stiger hårddiskpriserna med uppemot 10 procent15
- Quiz: Vad kan du om Inet?70
- Analytiker: Apple har överskattat intresset för Vision Pro51
- Microsoft rullar ut Startmenyreklam till alla68
- EU röstar igenom ”rätten att reparera”53