Autor | Zpráva | ||
---|---|---|---|
danhill Profil |
#1 · Zasláno: 29. 11. 2015, 19:40:23
Dobrý den,
mám problém se setavením dotazu do databáze : V MYSQL mám: [table] (1,2,3,4) VALUES (ahoj,jak,se,mas) A pak v PHP hledám řetězec ze sloupců : $find = 'ahoj jak se mas'; $select = $SQL_QUERRY($con,"SELECT * FROM `table` WHERE `1`,`2`,`3`,`4` LIKE '".$find."' ;"); Ale nechodí mi to. Nejspíše bude zapotřebí ty sloupce nějak spojit pomocí regulárních výrazů,ale vůbec nevím jak na to ... Děkuji moc |
||
Dan Charousek Profil |
#2 · Zasláno: 29. 11. 2015, 20:03:05
$q = "SELECT * FROM `table` WHERE CONCAT(`1`,`2`,`3`,`4`) LIKE '" . $find . "'"; |
||
Keeehi Profil |
#3 · Zasláno: 29. 11. 2015, 20:12:30
No skoro, jen tam chybí mezery.
Tohle je ale celé takové divné. O jaká data reálně jde a proč jr musíš ukládat zrovna takovým způsobem? |
||
danhill Profil |
#4 · Zasláno: 29. 11. 2015, 20:20:14
Konkrétně jde o zeměpisné souřadnice, které ukládám rozloženě kvůli další práci s nimi a přepočtům ...
Např. souřadnice : N 50° 12.345 E 015° 67.890 Jsou db uloženy do sloupců VALUE (N,50,12.345,E,015,67.890) A pak když uživatel do vyhledávacího input type="text" zadá,že hledá souřadnice N 50° 12.345 E 015° 67.890 tak získám nějaký $_POST["find"], který musím zpracovat a prohledat databázi,jestli tam tyto souřadnice nejsou a vyblít mu výsledek ... Tak mě napadlo,že by to mohlo jít zpracovat přímo dotazem,ale asi tuším,že to nebude tak jednoduché, jak jsem předpokládal ... |
||
Alphard Profil |
Jen to ne. Určitě ukládat jako desetinná čísla, tohle podle mě vůbec není k diskusi :-) Jak v tomhle zápisu budete třeba hledat objekty ve vzdálenosti X od místa A?
„A pak když uživatel do vyhledávacího input type="text" zadá,že hledá souřadnice N 50° 12.345 E 015° 67.890“ Uživatel budě těžko hledat přesně takovou souřadnici, on bude hledat nějaké rozumně velké okolí od zadané souřadnice. |
||
danhill Profil |
Ano, samozřejmě ... mám uloženo i lat lon pro tyto případy ... jenže pro jiné případy potřebuji mít uloženou i variantu decmin ...
A jedná se o aplikaci pro geocaching,takže ano, uživatel bude zadávat přesně takovou souřadnici ... Ale vlastně je pravda, že když mám primárně uloženo lat lon desetinné číslo, pak degmin nemusím ukládat v rozloženém tvaru,ale prostě jen jako varchar celý zápis ... To je jako svatá pravda ... A pak použít jen prostě LIKE v tom dotazu ... |
||
Alphard Profil |
#7 · Zasláno: 29. 11. 2015, 21:20:27
Přiznám se, že ten geocaching mě nenapadl. Já jsem s běžnými mapovými aplikacemi pracoval docela dost a desetinný formát jsem používal všude, proto ta docela striktní odpověď. Je na vás, jestli se v tomto případě na souřadnici díváte jako na řetězec, já jsem geocaching nikdy nezkoušel, takže nevím.
K odpovědi na původní dotaz, na rozdíl od [#2] bych nedoporučoval spojovat spojovat sloupce v databázi, ale naopak rozdělit vyhledávaná data a hledat s AND . Databázový engine pak dokáže lépe optimalizovat.
|
||
danhill Profil |
#8 · Zasláno: 29. 11. 2015, 21:42:11
Ok, děkuji za pohovor ... s převodem souřadnic do různých formátů mám prostě problém... teorie je celkem jednoduchá,ale v praxi s tím mám potíže, protože regulární výrazy jsou mým velkým nepřítelem stejně jako JS :) a bez toho prostě nejde ...
Každopádně děkuji na přivedení na novou myšlenku,docela jsem se na tom zacyklil a celkem zbytečně ... Díky ... |
||
Keeehi Profil |
#9 · Zasláno: 29. 11. 2015, 22:02:43
danhill:
„s převodem souřadnic do různých formátů mám prostě problém“ Ale ono to bohužel jinak nejde. Se souřadnicemi je potřeba pracovat jen jako s desetinnými čísly. Tudíž uživatelův vstup prevedeš vždy jen do stupňů. Pak s ním počítáš tak a až úplně na konci to prevedeš zpět do stupňů a minut. |
||
Časová prodleva: 9 let
|
0