Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Losowy rekord z zakresu
Threef
post 15.07.2010, 21:19:09
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.07.2010

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


Potrzebne mi zapytanie które zwróci losowy rekord z jakiegoś przedziału mam coś takiego
  1. $przedmioty=mysql_num_rows(mysql_query("SELECT `name` FROM `przedmioty` WHERE `cena` BETWEEN ".($cena-1)." AND ".($cena+1).""));
  2. if($przedmioty>0){
  3. $przedmiot=mysql_fetch_row(mysql_query("SELECT `name` FROM `przedmioty` WHERE `cena` BETWEEN ".($cena-1)." AND ".($cena+1).""));
  4. echo $przedmiot[rand(0,$przedmioty-1)];
  5. }


Pierwsze ładnie zlicza wszystkie rzędy których dotyczy zapytanie.
Z nieznanych mi przyczyn gdy $przedmioty>1 wybierany jest tylko pierwszy rekord

Piszę to w dziale MySQL zamiast PHP bo wiem (chyba) że da się to wykonać przy pomocy jakiegoś zapytania
Go to the top of the page
+Quote Post
wookieb
post 15.07.2010, 21:21:07
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Dodajesz
  1. ORDER BY RAND() LIMIT 1

W drugim zapytaniu,


--------------------
Go to the top of the page
+Quote Post
Threef
post 15.07.2010, 21:36:06
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.07.2010

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


Dalej zapytanie zwraca tylko 1 rekord
po prostu resztę rekordów o tej samej cenie olewa tongue.gif
w ogóle olewa wszystkie wybiera tylko ten z ceną równą $cena i najmniejszym ID (Pierwszym wystąpieniem w bazie)

Ten post edytował Threef 15.07.2010, 21:39:20
Go to the top of the page
+Quote Post
wookieb
post 15.07.2010, 21:38:29
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1.  
  2. $przedmioty=mysql_num_rows(mysql_query("SELECT `name` FROM `przedmioty` WHERE `cena` BETWEEN ".($cena-1)." AND ".($cena+1).""));
  3. // nie wiem po co
  4. if($przedmioty>0){
  5. // i jeszcze raz to samo zapytanie?
  6. $przedmiot=mysql_fetch_row(mysql_query("SELECT `name` FROM `przedmioty` WHERE `cena` BETWEEN ".($cena-1)." AND ".($cena+1).""));
  7. // jakim cudem?
  8. echo $przedmiot[rand(0,$przedmioty-1)];
  9. }


Dokonując logicznych skrócen twój kod zamyka się w
  1. $przedmiot = mysql_fetch_row(mysql_query("SELECT `name` FROM `przedmioty` WHERE `cena` BETWEEN ".($cena-1)." AND ".($cena+1)." ORDER BY RAND() LIMIT 1"));


Ten post edytował wookieb 15.07.2010, 21:38:44


--------------------
Go to the top of the page
+Quote Post
Threef
post 15.07.2010, 21:50:23
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.07.2010

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


Działa wielkie dzięki
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 14:28