![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 372 Pomógł: 1 Dołączył: 13.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Jednym z modułów na mojej stronie jest losowanie dwóch randomowych obrazów, po odświeżeniu strony losują sie kolejne 2 obrazki na mysql RAND() - pytanie jak zrobić, aby to nie były te same obrazki. (Wiadomo, jak jst mało obrazów to zaczną sie powtarzać) Myślałem żeby zapisać już wylosowane w formie ciasteczka i zapisywać tam ID dwóch obrazków np: Kod 43 - 32 65 - 89 . . . itd. Pytanie jak zrobić sensowny warunek w mysql, żeby coś takiego zadziałało majac takie zapytanie: Kod SELECT * FROM obrazki ORDER BY RAND() LIMIT 2 Musiałbym zrobić coś takiegoKod SELECT * FROM obrazki WHILE (id != 43 AND id != 32) OR (id != 65 AND id != 89) [itd..] ORDER BY RAND() LIMIT 2 Jest na to jakaś lepsza metoda? Ten post edytował Watt 30.10.2012, 19:42:02 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 4.07.2008 Ostrzeżenie: (30%) ![]() ![]() |
ja bym pobrał z tabeli info ile jest elementów, potem uruchomił pętlę w php z wyborem dwóch liczb z danego zakresu(od 1 do maks ilości elementów) oczywiście sprawdzając warunek czy się nie powtórzyły i potem pobrał dwa zdjęcia o wylosowanych indeksach. ... napiszę Ci to... momento...
<?php $sql="SELECT max(id_zdjec) FROM zdjecia"; $wynik=@mysql_query($sql); if (!$wynik) { exit (' blad podczas pobierania informacji z bazy danych a'); } while ($row=mysql_fetch_array($wynik) ) { $ilosc_zdjec=$row['max(id_zdjec)']; } $i=0; $foto1=rand($ilosc_zdjec); do { $foto2=rand($ilosc_zdjec); if ($foto1!=$foto2) { $i=99; } } while ($i !=99); // jesli wiecej zdjeć to zrób zmienną tablicową i teraz pobierz zdjęcia o indeksie $foto1 i $foto2 ?> do zastosowania jeśli zdjęcia dodawane są do kolumny gdzie indeksujesz auto_increment , bez dziur w numeracji Ten post edytował punoljoe 30.10.2012, 19:48:42 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 11:26 |