Autor | Zpráva | ||
---|---|---|---|
dan55 Profil |
#1 · Zasláno: 28. 4. 2011, 17:46:06
Ahoj,
potřebuji seřadit nabídky na tržišti podle vzdálenosti. Souřadnice jsou ve tvaru x a y, jak to seřadit podle vzdálenosti uživatele, který si zobrazí nabídky na tržišti? Jde to přímo SQL dotazem nebo to musím nacpat do pole a pak to nějak seřadit? Díky moc... |
||
Joker Profil |
#2 · Zasláno: 28. 4. 2011, 17:50:25
dan55:
No schválně- Rozdíl souřadnic X, rozdíl souřadnic Y a vzdálenost mezi dvěma body tvoří pravoúhlý trojúhelník, kde vzdálenost je přepona. Takže jak zní Pythagorova věta? |
||
dan55 Profil |
#3 · Zasláno: 28. 4. 2011, 17:54:23
Joker:
Dík za nakopnutí, jak zní Pythagorova věta vím, nedávno jsme se ji učili (no, vlastně půl roku to je). No ale nevím jak to napsat do PHP, nechci hotový script, spíš jen větší nakopnutí ;) |
||
l564 Profil |
#4 · Zasláno: 28. 4. 2011, 17:55:02 · Upravil/a: l564
Joker:
„Pythagorova věta?“ Pouze doplním: A² = C² - B² B² = C² - A² C² = A² + B² o_O Děkuji za upozornění |
||
o_O Profil |
#5 · Zasláno: 28. 4. 2011, 18:31:39
|
||
Stano Profil * |
#6 · Zasláno: 28. 4. 2011, 19:43:53
l564, Joker
nemyslím že mal problém vypočítať vzdialenosť ale skôr sa pýtal ako napísať query tak aby to počítal už na strane databázy... |
||
dan55 Profil |
#7 · Zasláno: 28. 4. 2011, 20:19:52
Stano:
Ano, výpočet vzdálenosti mám už hodně dávno hotový, spíš potřebuji SQL dotaz nebo případně jak to seřadit. |
||
Stano Profil * |
#8 · Zasláno: 28. 4. 2011, 20:44:01
no ja v podstate neviem či má nejaký zmysel to cele spočítať už priamo v databáze. lebo na väčšine serverov sú práve databázy preťažené a nestíhajú. ale určite by ma zaujímalo ako ten dotaz vyzerá. ešte som také niečo nepotreboval takže som to neskúmal.
v php to môžeš spraviť na tento spôsob: $výsledky = pole so všetkými výsledkami array(array(x => 3, y => 4, nick => Stano), array(x => 3, y => , nick => Fero)); $moj_x = 10; $moj_y = 10; foreach($vysledky as $vysledok){ $vzdialenost = sqrt(pow($vysledok["x"]-$moj_x,2) + pow($vysledok[$i]["y"]-$moj_y,2)); $vzdialenosti[$vysledok["nick"]] = $vzdialenost; } asort($vzdialenosti); /zoradí od najmenšieho po najväčšie $i = 0; foreach($vzdialenosto as $nick => $vzdialenost){ if($i < 10){ echo $nick."<br />"; } $i++; } je možné že tam mám chyby. neskúšal som to. ale hádam si s týmto už poradíš. |
||
Marek88 Profil |
#9 · Zasláno: 28. 4. 2011, 20:47:56 · Upravil/a: Marek88
No pokud máš aktuální souřadnice uložené v php například v proměnných $x a $y a v databázi máš sloupce x a y, tak bych zkusil přidat do dotazu:
ORDER BY POW($x-x, 2)+POW($y-y, 2) EDIT: Opraven výpočet vzdálenosti |
||
dan55 Profil |
#10 · Zasláno: 29. 4. 2011, 07:09:29
Marek88:
Super, funguje ;) Stano: Tobě také děkuji za to druhé řešení, možná ho použiji jinde :) |
||
o_O Profil |
#11 · Zasláno: 29. 4. 2011, 07:56:17
l564:
> o_O > Děkuji za upozornění Promiň, ale reagoval jsem na tvůj obrázek, který tam byl když jsem navštívil toto téma. Správně to má být malým (což bylo na obrázku špatně) Když už jsem příspěvek zaslal, obrázek byl fuč... |
||
Časová prodleva: 13 let
|
0