![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 0 Dołączył: 25.12.2009 Ostrzeżenie: (0%) ![]() ![]() |
Otóż muszę napisać skrypt listy przebojów, gdzie użytkownicy będą mogli zgłaszać swoje propozycje, będzie poczekalnia oraz top lista z utworami, na które można głosować.
Najciekawsza wg mnie realizacja takowej listy to lista trójki: http://lp3.polskieradio.pl/ Z napisaniem skryptu nie będę mieć żadnego problemu. Jedynym moim zmartwieniem teraz są tabele. Póki co, mam tabele notowań (id, start_date, end_date), piosenek (id, author, title, added_time). Ale jak rozegrać tabelę top listy i poczekalni? Jako dwie osobne tabele, czy jako jedna, z kolumną, która rozróżnia czy dana piosenka jest w top liście czy poczekalni? Przydałaby się też chyba tabela archiwalna dla piosenek. Może ktoś rzuci jakąś mądrą radą dla mnie? Może ktoś się zabierał za podobny projekt i zna strukturę tabel, która się sprawdzi? Za wszelką pomoc dzięki. Edit: Może i bym nie miał takiej zagwozdki, gdyby nie fakt, iż chciałbym to zautomatyzować. Administrator tylko dodawałby utwory do tabeli piosenek, a później wszystko samo by się realizowało ![]() Ogólnie moja zagwozdka polega na tym, iż nie wiem jak pogodzić top listę z poczekalnią. Jest notowanie, mamy 15 piosenek w top liście i 10 w poczekalni. Przez tydzień użytkownicy głosują na top listę i poczekalnię. W chwili zakończenia notowania, pozycje są sortowane wg otrzymanych głosów. Pozycje z poczekalni, które mają więcej głosów niż te w top liście, wskakują na TL. Poczekalnia uzupełniania jest o nowe tytuły. Piosenki, które wypadają z TL nie są uwzględnienia w np. najbliższych 3 notowaniach (jako propozycje do poczekalni). Ten post edytował Grzesiek23 11.11.2010, 14:38:02 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jak sam mógłbyś zobaczyć, poczekalnia to nic innego jak rekordy z tabeli po 30 miejscu (liczone wg oddanych głosów). Co za tym idzie, poczekalnia i toplista to jedna tabela, nawet bez żadnego pola które określa czy utwór jest w poczekalni czy też wskoczył już na toplistę.
Imo tu wystarczą dwie tabele: glosy[id_utworu, id_uzytkownika, wartosc] utwory[id, nazwa, ...] Utwory wybierasz tak: Toplista: 'SELECT u.*, AVG(g.wartosc) AS glos FROM utwory AS u LEFT JOIN glosy AS g ON u.id = g.id_utworu GROUP BY u.id ORDER BY glos LIMIT 30'; Poczekalnia: 'SELECT u.*, AVG(g.wartosc) AS glos FROM utwory AS u LEFT JOIN glosy AS g ON u.id = g.id_utworu GROUP BY u.id ORDER BY glos LIMIT 30, 20'; Pisałem z palca więc mogą być jakieś błędy. -------------------- Nawet świnka może wejść na drzewo kiedy jest chwalona :)
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.04.2025 - 04:28 |