![]() |
![]() ![]() |
![]() |
![]()
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 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
w wersji php:
-------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 372 Pomógł: 1 Dołączył: 13.06.2008 Ostrzeżenie: (0%) ![]() ![]() |
Super!
Tylko jedno pytanie czy można tak zrobić, żeby obrazek nie mógł się powtarzać z obrazkiem, który był już wyświtelony? Czyli mamy obrazki A, B, C, D Pojawiła sie kombinacja: A - B, więc nie chce aby pojawiła się już A - B i B - A, za to mogą pojawić się kombinacje np. A - C, B - D, D - A itd. Ten post edytował Watt 30.10.2012, 20:49:30 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 2 Dołączył: 4.07.2008 Ostrzeżenie: (30%) ![]() ![]() |
moim sposobem możesz wprowadzić numery, które były do bazy (nowej tabeli) bądź pliku i potem sprawdzać... inaczej raczej tego nie zrobisz... musisz zapisać gdzieś kombinacje jakie były (numery id zdjęć) i potem nie dopuścić do powtórki.
np. tabela (id_kombinacji int(10) not null unsigned primary_key auto_inc ; id_one int (10) not null unsigned; id_two int(10) not null unsignek) wpisujesz rekord do tej tabeli, gdy wyświetlasz zdjęcia a następnie przed wyświetleniem kolejnej kombinacji sprawdzasz numer z jedną kolumną (np. id_one) jeśli jest zgodność to potem z id_two dla danych rekordów... i już wiesz, wyświetlasz lub losujesz ponownie i znów sprawdzasz... Ten post edytował punoljoe 30.10.2012, 21:00:00 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
To już niestety w takim wypadku trzeba by pary zapisać.
-------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 18:25 |