Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

Behöver hjälp med php

Skapad av bunny, 2013-05-23 22:29 i Webbutveckling & Programmering

3 833
3 inlägg
2 poäng
bunny
Visningsbild
P 29 Hjälte 1 272 inlägg
0
Hej! Det är som så här! Jag ska försöka förklara så utförligt som möjligt så det blir lätt att hjälpa till.

Jag håller på att göra en hemsida, med en feed.

jag har 3 olika "databaser".
1. Friends (här får varje användare en egen table, och i den tablen står hela personens friendlist.)
[friend_id] [name] [blocked] och [friends_time]

2. postfeed
Här är en stor klump av alla posts som gjorts på hela sidan.
[post_id] [user_id] [post_message] [timestamp] [username]

Kruxet är att man ska bara se postsen som ens vänner har gjort. (alltså personerna på friendslisten)

Den fetchar först vännerna. Den går alltså igenom vänlistan från början, det tar vän nummer 1, fetchar alla posts med ORDER BY timestamp. Sedan tar den nästa vän, fetchar alla posts med ORDER BY timestamp igen, och igen.

Detta gör att på sin feed, så kommer alla vän nummer 1 posts i tidsordning (timestamp)
sedan kommer vän nummer två's posts i tidsordning (timestamp)
osv, osv.

Jag vill såklart att postsen ska vara sorterade efter 100% timestamp, och inte att först kommer vän nummer 1's posts efter timestamp, sedan 2an, osv.

Jag kan inte lista ut hur jag ska göra! Vore extremt tacksam med lite hjälp här! :)

Ingen status

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

SkalmanOnDrugs
Visningsbild
P 35 Göteborg Hjälte 2 758 inlägg
2
Svar till bunny [Gå till post]:
"jag har 3 olika "databaser".
1. Friends (här får varje användare en egen table, och i den tablen står hela personens friendlist.)
[friend_id] [name] [blocked] och [friends_time]"

Inte så bra design. Säg att din community skulle bli stor och ha typ 500 medlemmar då innebär det 500 tables. Onödigt. Ha istället t.ex. en till kolumn i tablen members som heter typ "friendsWith" som kan innehålla en sträng av sammansatta id-nummer. T.ex. "1,5,6,7,15,300" vilket innebär att man är vän med 6 personer med de id-nummer som är separerade av kommatecken. Låt varje medlem ha ett unikt id-nummer och genom att läsa av friendsWith-strängen så kan du få ut vilka medlemmar personen är kompis med. Du kan även använda JSON för att göra stringify om du vill vara lite fancy istället för att bygga en sträng sådär.

"Kruxet är att man ska bara se postsen som ens vänner har gjort. (alltså personerna på friendslisten)"

Med min lösning så går det att åstadkomma på följande sätt:

1. Läs av alla användarens vänner genom att kolla friendsWith värdet i members kolumnen. Hantera id-numrerna genom att spara ner de i en array eller liknande.
2. För varje post som läses in så kolla om skaparens id finns i användarens samling av vänner (i arrayen), om inte så visa ej posten.

Och ja just det när du hämtar posts ska du göra så med timestamp som du beskrev så att du får i rätt ordning :)


Tillägg av SkalmanOnDrugs 2013-05-23 22:50

EDIT: Okej nu tänkte jag inte på att du även ville ha med flagga för blocked och tidsstämpel för när man blev kompis med varandra. Ett sätt är att ha en separat table för ALLA relationer, alltså inte table för varje medlem. Kan se ut såhär typ:

[friend1id] [friend2id] [timestamp] [friend1block] [friend2block]

friend1id är id:et för första personen i en relation och friend2id är id:et för den andra personen. friend1block och friend2block fungerar samma som din förra blocked-flagga men det behövs två för att veta vem som blockat vem... t.ex. om båda blockat varandra x)

Så sedan hämtar du bara alla relationer ur tabellen genom att kolla vilka rader där mitt user-id antingen är samma som friend1id eller friend2id. Sedan får man i sin tur hantera resultatet genom att ta ut den andra personens id. T.ex. om mitt id-nummer är samma som friend1id i rad så sparar jag friend2id i en array över kompisars id.

Hoppas jag inte fick det att låta ännu mer komplicerat nu bara ^^ Jag brukar krångla till det.

Du måste konstruera ytterligare pyloner

bunny
Visningsbild
P 29 Hjälte 1 272 inlägg
Trådskapare
0
Svar till SkalmanOnDrugs [Gå till post]:
Tack så hemskt mycket för svaret! Jag ska försöka lösa problemet med din metod. Jag kommer tillbaks vid ett senare tillfälle o säger hur det gått! :)

Ingen status


Forum » Datorer & IT » Webbutveckling & Programmering » Behöver hjälp med php

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons