Autor Zpráva
danhill
Profil
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
$q = "SELECT * FROM `table` WHERE CONCAT(`1`,`2`,`3`,`4`) LIKE '" . $find . "'";
Keeehi
Profil
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
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
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
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
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: