![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 555 Pomógł: 84 Dołączył: 20.02.2008 Skąd: Małopolska Ostrzeżenie: (0%) ![]() ![]() |
W taki sposób losuję, które rekordy z bazy danych mają być pobrane
Kod $comrades = $db -> Execute("SELECT * FROM users WHERE id >= ".$sektor_id -> fields['id']." AND id <= ".$sektor_id -> fields['id']." + 2 ORDER BY rand() LIMIT 4"); Niestety ilość rekordów spełniających te kryteria wynosi 3, a LIMIT 4. W jaki sposób przerobić to by było to prawdziwe losowanie - tj. za każdym razem byłby losowany user z podanego przedziału id bez względu na poprzednie losowania (czyt. możliwe byłoby pobranie kilka razy tego samego usera). -------------------- Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+ Strona Domowa | Elradia MMORPG FireFox: make the web better. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 4 Dołączył: 9.06.2007 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
szczerze mówiąc do końca nie rozumiem co masz na myśli. Losowanie 4 użytkowników z bazy, gdy tylko 3 spełnia zależności? to tylko możesz kolejność ich zmienić, ale to już masz zrobione w tym zapytaniu. W jakim celu wykorzystujesz ten fragment 'id >= ".$sektor_id -> fields['id']." AND id <= ".$sektor_id -> fields['id']." + 2' Ja bym to zrobił po prostu:
Kod $comrades = $db -> Execute("SELECT * FROM users ORDER BY rand() LIMIT 1"); I masz losowanie różnych użytkowników, nie ma możliwości aby za każdym razem był inny gdyż ich suma jest skończona a coś mi mówi że ilość wywoływań powyższego skryptu będzie większa niż ilość użytkowników.
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 16:47 |