FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Klarade millennium-buggen
|
Hej
Jag sitter och kodar en sida där medlemmar ska kunna spara favoriter bland inlägg. Än så länge har jag en databastabell (mysql) som ser ut ungefär såhär: Kod:
id inlägg Kod:
id användarId Inga problem att lista inlägg som en specifik användare har gjort som favorit. Mitt problem kommer när jag vill lista alla inlägg och visa för användaren vilka inlägg h*n har sparat som favorit. Det närmaste jag kommer är att köra en LEFT OUTER JOIN, men då kan jag inte ta hänsyn till vilken användare det är som sparat inlägget som favorit. Antingen hjälp med att lösa det såhär, eller hjälp att hitta en ny infallsvinkel. Miljö Mysql/PHP båda i version 5. |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Medlem
|
Jag förstår inte riktigt vad du vill göra.
Du kanske menar inlägg som jag har skrivit som någon annan användare har gjort som favorit? |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Klarade millennium-buggen
|
Citat:
Listningen ska alltså se ut ungefär såhär: 2007-04-05 rubrik här står det lite text 2007-04-08 rubrik - du har valt denna som favorit här står det lite text 2007-04-08 rubrik här står det lite text 2007-04-11 rubrik - du har valt denna som favorit här står det lite text 2007-04-15 rubrik här står det lite text |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
Kanske itne den bästa lösningen men du hämtar ut allt ur databasen och sedan i while loopen så gör du en enkel if sats
If(användarId == session["användarId"]) echo 'Den här har du redan i favoriter'; else echo 'Lägg till i favoriter'; |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
Citat:
Kod:
SELECT p.id, p.post, f.post AS favorite_post FROM posts AS p LEFT JOIN favorites AS f ON p.id = f.post WHERE f.user = $user ORDER BY p.id ASC Kod:
if(isset($result['favorite_post'])) { echo 'redan tillagd'; } else { echo 'lägg till'; } |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Klarade millennium-buggen
|
Om inläggen representeras av till exempel ett inläggsnummer är det enklast att ha ett textfält i användardatabasen och där lägga in inläggsnumren kommaseparerade. Den kommaseparerade strängen är lätt att göra om till en matris. Har man oförutsägbara kombinationer av data så är det alltid den enklaste vägen.
|
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
Citat:
|
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Har WN som tidsfördriv
|
Citat:
Hur hade du tänkt att lösa det på ett smidigt sätt om någon vill ta bort en favorit? Vad är enklast: 1. DELETE FROM tabell WHERE id = xx 2. Hämta kolumninnehåll, splitta, loopa och ta bort, spara tillbaka |
||
![]() |
![]() |
![]() |
#9 | |||
|
||||
Klarade millennium-buggen
|
Citat:
Kod:
2007-04-08 rubrik - du har valt denna som favorit här står det lite text 2007-04-08 rubrik här står det lite text 2007-04-11 rubrik - du har valt denna som favorit här står det lite text |
|||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Medlem
|
Citat:
Kod:
SELECT p.id, p.post, f.post AS favorite_post FROM posts AS p LEFT JOIN favorites AS f ON p.id = f.post AND f.user = $user ORDER BY p.id ASC |
||
![]() |
![]() |
Svara |
|
|