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å.
- Igår Datorhallar åker på miljardstor skattesmäll – ljög om att utvinna krypto 38
- Igår Veckans fråga: Möss eller ljud – Vad lägger du mest pengar på? 66
- 16 / 4 X kan råda bot på bottar med betallösning 35
- 16 / 4 Blizzards tidigare chef vill kunna dricksa spelutvecklare 95
- 16 / 4 Youtube attackerar appar med reklamfritt Youtube 82
- Tillför "Overencumbered" något till spel?15
- Datorhallar åker på miljardstor skattesmäll – ljög om att utvinna krypto39
- Problem med RAID och AHCI1
- Forskare sätter Antarktis på Pokémon-kartan17
- Här är systemkraven för Ghost of Tsushima till PC25
- 3D skrivare - Diskussionstråden1746
- *edit* mITX/mATX bygge - 1440p Warzone / wow Budget: ~20.000kr ?24
- Intel 14900KS 6400mhz på custom vatten Loop4
- Liten spelburk för 4K30.1
- Ny Skrivbord7
- Köpes CPU Köpes - 5800X3D / 5700X3D / 13600K/KF
- Säljes Intressekoll: Asus ROG RTX 3080 Ti Strix OC
- Säljes 4090 RTX TUF ASUS OG OC 24GB
- Säljes Raspberry Pi 4 Model B 8GB + Cooler Master Raspberry Pi 4 Case 40
- Köpes På jakt efter en lite äldre prisvärd ultrabook-dator
- Säljes ASUS 15,6" ZenScreen MB169C+
- Säljes Stativ - Velbon C600
- Säljes Acer 34" Predator X34GS IPS 21:9 Curved 180 Hz
- Säljes GoPro HERO10 Black
- Säljes Apple Mac Mini - M2 | 16GB | 512GB
- Logitech släpper ”AI-knapp” – snabbgenväg till Chat GPT3
- Här är systemkraven för Ghost of Tsushima till PC25
- Välj rätt TV för ljusa rummet6
- Bli ett RGB-Pro med Razers nya musmatta för 1 100 kronor12
- Datorhallar åker på miljardstor skattesmäll – ljög om att utvinna krypto39
- Veckans fråga: Möss eller ljud – Vad lägger du mest pengar på?66
- Western Digital slår lagringsrekord med SD-kort på 4TB28
- Asus lanserar 8K-skärm med Mini LED33
- Forskare sätter Antarktis på Pokémon-kartan17
- X kan råda bot på bottar med betallösning35