Otsimine

Sortimine aitab andmete juures, kus tulba tekst algab otsitava väärtusega. Kui aga otsitav lõik võib asuda teksti sees, siis paljas tekstide või arvude tähestikulisse või kasvavasse järjekorda seadmine ei aita soovitud rida leida. Sellisel puhul on abiliseks otsimisvõimalus. Tänapäevastel veebilehestikel on see paljudel sisse ehitatud. Ning kui ka pole, siis mõnevõrra saab toetuda ka Google otsingule, kirjutades otsingu ette site:masinanimi. Näiteks otsing “site:minitorn.tlu.ee php” annab minitorn.tlu.ee masinas PHPga seotud lehed – niipalju, kui otsimootor neid sealt leidnud on. 

Oma särk aga ikka ihule kõige lähemal ning isetehtud otsingu peale võib ka ehk kindlam olla, et ta just vajalikest kohtadest otsib. Funktsioonile tuleb siis juurde järjekordne parameeter. Ning kui otsisõna ei määrata, siis selle väärtuseks saab tühi tekst – ehk osa, mis igas tekstis leidub ning välja kuvatakse kõik andmed.

[crayon-68109c5308d4f899975349/]

PHP murelapseks on üle veebi saabuvate sümbolite varjestamine langjoontega. Toimetus oli vajalik saabuvate andmete paigutamiseks MySQLi päringusse. MySQLi seda aga üldjuhul ei vaja ning serveri konfiguratsioonis võib olla erisümbolite varjestus maha võetud. Et küsimärgiga parameeter mugavalt tekstisobivust otsivasse LIKE-lausesse ei lähe, tuleb siin otsitav parameeter otse SQLi paigutada. Kui ei tea, kas varjestavad langjooned on ees või mitte, siis üheks võimaluseks on need maha võtta stripslashes-käsuga ning hiljem uuesti addslashes-käsuga tagasi panna. Puuduva varjestuse puhul pole ka stripslashes-il midagi maha võtta, teine peale paneb ikka, et oleks andmebaasilauses kõik korrektne.

[crayon-68109c5308d54357081773/]

Otsinguosa saab lause WHERE-ossa olemasolevale tingimusele otsa liita. Siin otsime korraga nimetuse ja grupinime seest – ükskõik kummas otsitav lõik leitakse, sobiv rida kuvatakse ikka tulemusena. Et kaupade tabeli kaubagrupi_id järgi kaubagrupi tabeli id-le viitamist ikka alati kontrollitaks, selleks peab ORidega kahe tulba järgi otsing eraldi sulgudes olema.

[crayon-68109c5308d56660085774/]

Ning fail tervikuna.

[crayon-68109c5308d58329768057/]

Kaubaotsingu failis tuleb juurde koht otsinguteksti sisestamiseks. Ning sisestuselemendil peab ümber olema vorm koos action’iga määramaks, kuhu faili sisestatud andmed saata. 

[crayon-68109c5308d5a701564628/]

Kuna veebilehe puhul ei ole nüüd enam teada, kas üldse ja kumb parameeter on väärtustatud, siis on heaks mooduseks neile ka PHP-lehel vaikeväärtused anda. Hädapärast võiks töötada ka vorm $kaubad=kysiKaupadeAndmed($_REQUEST[“sort”], $_REQUEST[“otsisona”]), aga kui vastavad parameetrid lehel puudu (nt. esimest korda avades), siis võib PHP server vastava konfiguratsiooni puhul hakata hoiatusi andma, et küsitakse olematuid väärtusi massiivist. Nõnda siis järgmine lehekuju koos algusega ikka kindlam.

[crayon-68109c5308d5c213474628/]

Näide otsinguteksti sisestamise kohta

Ning aadressiriba peale jõudnud sõna järgi otsingutulemus.