Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL+PHP] Pobieranie posortowanych wyników..., ...w niecodzienny sposób.
DJ ProG
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 2
Dołączył: 27.08.2008

Ostrzeżenie: (0%)
-----


Witam.

Przejdę od razu do rzeczy: posiadam autorski skrypt, listujący wybrane podmioty z bazy MySQL. Dzieje się to za pomocą utworzonych kategorii (czego działania nie muszę chyba tłumaczyć, bo takie opcje ma większość współczesnych CMSów).
Powiedzmy, że w skrócie tak wygląda struktura podmiotów: id | category | name | col.

Owe podmioty mają być wyświetlane wg jednej z kolumn (dajmy col DESC), a drugim parametrem ma być kolejność losowa. Problem w tym, że owe "losowanie" ma odbywać się co jakiś czas, np. co godzinę. No właśnie, jak to zrobić? Jak zrobić, by losowanie zwracało te same wyniki dla wybranego przedziału czasowego (określanego w minutach) ?

Myślałem nad ciastkami, sesjami itp. w których przechowywane byłyby IDy podmiotów (wszystko jakoś zaszyfrowane wraz z sumą kontrolną - zawsze bezpieczniej (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ). W przypadku ich istnienia skrypt zaczytywałby i wyświetlał listę zapisanych pozycji. Problem w tym, że trzymanie tych danych w sesjach jest niemożliwe (ze względu na strukturę systemu, która co jakiś czas opróżnia wszystkie dane sesyjne), a w ciastkach mogłoby się okazać zbyt hmm... "nieoptymalne". No właśnie, ja poszukuję optymalnego rozwiązania, gdyż przecież ilość owych podmiotów nie jest zależna ode mnie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) .
Podczas wczorajszych rozmów z kolegą wpadłem na pomysł, aby wylosowane IDy (SELECT id FROM tbl WHERE category="n" ORDER BY tbl DESC, RAND()) zapisywać w bazie, np. id | category | idz - gdzie idz będzie miało postać np. "5,13,88,33,45,74,2,14,22". Ew. dodałoby się kolumnę page, która odpowiadałaby numerowi strony podczas listingu danej kategorii, co znacznie usprawniłoby wyświetlanie wyników.

I tu pojawia się kolejny problem: jak pobrać tylko rekordy o podanych IDach, ale w taki sposób, by ich kolejność była zależna od parametru? Czyli mam zapisane te numery do pobrania i jak to mogę zrobić, by zostały wyświetlone jedynie one i w "wejściowej" kategorii? Bo nie mam pomysłu dla WHERE id IN (n1,n2,n3...) by wyniki były posortowane jak ja chcę...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 29.09.2025 - 17:32