Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php/mysql] co tydzień inna kolejność rekordów z bazy danych
M@X
post
Post #1





Grupa: Zarejestrowani
Postów: 212
Pomógł: 0
Dołączył: 18.12.2003
Skąd: Warszawa

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


Witam.
Mam w bazie kilka wierszy, np ID od 1 do 4.
W jaki sposób mogę wyświetlać je tak aby co tydzień zmieniała się ich kolejność ? np w tym tygodniu kolejność jest 1,2,3,4 a w kolejnym tygodniu 2,3,4,1.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
croc
post
Post #2





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Sposób #1
Cotygodniowy cron wykonujący zapytanie:
  1. ALTER TABLE tabela ORDER BY rand()

Potem wybierasz te rekordy z tabeli bez żadnego kryterium sortującego, po prostu tak jak egzystują sobie w tablicy.

Sposób #2
Mniej inwazyjny, również cotygodniowy cron. Robisz dodatkową kolumnę z wagami, np. weight. W cronie robisz coś takiego:
  1. $query = mysql_query('SELECT id FROM tabela');
  2. $weights = range(1, mysql_num_rows($query));
  3. shuffle($weights);
  4. for($i = 0; $row = mysql_fetch_assoc($query); ++$i) {
  5. mysql_query('UPDATE tabela SET weight = ' . intval($weights[$i]) . ' WHERE id = ' . intval($row['id']));
  6. }


I potem wybierasz rekordy z bazy np. tak:
  1. SELECT * FROM tabela ORDER BY weight ASC


Ten post edytował croc 26.05.2010, 22:59:01
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: 8.10.2025 - 23:43