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 Europol ställer sig emot end-to-end-kryptering 123
- Igår Svenska speljätten Embracer splittras – blir tre separata bolag 16
- Igår Snabbkoll: Brukar du handla begagnad teknik? 88
- Igår Akira har tjänat en halv miljard kronor på ransomware-attacker 14
- 21 / 4 Gamers Nexus: EK Water Blocks har problem 32
- Vilken luftkylare?9
- LLama3 eller "Hur kan en språkmodell stapla saker?"29
- Googles nästa Chromecast får dubblerad lagring24
- Köpråd bil31
- Dagens fynd — Diskussionstråden49470
- Tiny11 gör Windows 11-installationen lätt20
- TV-guiden 2023/24 – diskussionstråden612
- EK Water Blocks lovar bot och bättring9
- Wi-Fi problem med LG G3 och Telia F11
- Posta din hastighet!2420
- Säljes 16 GB DDR5 Sodimm 5600 MHz
- Säljes Logitech G915 Lightspeed trådlöst tangentbord GL Tactile & Logitech G Pro Wireless
- Säljes ZOWIE XL2566K
- Säljes Stationär dator + skärm + laptop + ram
- Säljes KFA2 GeForce RTX 4070 Ti EX Gamer (1 Click-OC)
- Säljes Noctua NH-D15S (1x AM4 & 1x LGA 115x)
- Säljes LG Ultragear 32" 1440p 180Hz Nano IPS (32GP850)
- Köpes grafikkort köpes, gärna frankensteinade kort eller utan fläkt
- Säljes Asus GeForce RTX 2080 ROG Strix Gaming OC 8GB
- Köpes Köpes - i7 4770-4790(K)
- Googles nästa Chromecast får dubblerad lagring24
- EK Water Blocks lovar bot och bättring9
- Tiny11 gör Windows 11-installationen lätt20
- SFW! Känn doften av nyklippt gräs med Dreame Roboticmower A118
- Så ska Louqe locka tillbaka chassiälskarna8
- Enklare installera Windows-program från webben11
- Nanosys: QDEL-tekniken potentiellt redo för kommersiell lansering 202632
- Europol ställer sig emot end-to-end-kryptering123
- Svenska speljätten Embracer splittras – blir tre separata bolag16
- Snabbkoll: Brukar du handla begagnad teknik?88