<meta name="author" content="Jakub & Jan Filipowscy">
<meta name="description" content="Serwis webmasterow. Znajdziesz tu kilka kursow popularnych internetowych jezykow programowania takich jak: HTML, CSS, WML, SGML, XML, PHP, Perl i Java. Zamiescilismy tu rowniez wiele skryptow JavaScript, PHP i CGI. Przeczytac mozna kilka artykulow i sciagnac kilka szablonow. Dla poczatkujacych jest dzial BeginnerZone. ">
<p align="justify">Je┐eli jeste╢ autorem wiΩkszej witryny, to napewno zastanawia│e╢ siΩ kiedy╢ nad umieszczeniem na swojej stronie wyszukiwarki zasob≤w. Istnieje wiele takich aplikacji napisanych w Perlu i PHP, ale nigdy nie bΩd▒ one w 100% dostosowane do twojej strony. Dlatego pomogΩ ci w napisaniu skromnej przeszukiwarki strony.</p>
<p align="justify">Mamy do wyboru trzy warianty co do samego odnajdywania stron. Pierwsza to po prostu przeszukiwanie stron umieszczonych w jakim╢ katalogu. Druga to przeszukiwanie bazy danych z zawarto╢ci▒ wszystkich tekst≤w, kt≤re na swojej stronie zamieszczasz. I wreszcie trzecia - przeszukiwanie na podstawie s│≤w kluczowych. W tym artykule opisze wszystkie trzy typy, razem z kodami ╝r≤d│owymi. Najpierw jednak musimy utworzyµ dokument HTML, w kt≤rym umieszczeny bΩdzie formularz przeszukiwarki. BΩdzie on mia│ postaµ:<br>
<pre><html>
<body>
<form method="post" action="szukaj.php">
<input type="text" name="lancuch">
<input type="submit value="OK">
</form>
</body>
</html></pre>
</p>
<h3>Przeszukiwarka plik≤w</h3>
<p align="justify">W tym rodzaju przeszukiwania, najprostszym je┐eli chodzi o u┐yte technologie, ale najtrudniejszym algorytmicznie, u┐ywaµ bΩdziemy rekurencji. Rekurencja istnieje wtedy, je┐eli w jakiej╢ funkcji wywo│ujemy ni▒ sam▒. Dla przyk│adu gdy chcemy obliczyµ 4! (1*2*3*4) mo┐emy to zapisaµ tak:<br><br>
$l = 1;<br>
for($i=1;$i<=4;$i++) $l*=$i;<br>
echo $l;<br><br>
Lub tak:<br><br>
<pre>function silnia($l) {
if($l>1) {
$wyn = $l*silnia($l-1);
return $wyn;
}
else return 1;
}
$wyn = silnia(4);
echo $wyn;</pre>
<p align="justify">W pierwszym przypadku tworzymy pΩtle w kt≤rej zmienna l jest mno┐ona przez kolejne warto╢ci i. W drugim przypadku tworzymy funkcjΩ silnia() w kt≤rej sprawdzamy czy parametr l jest wiΩkszy od 1, je┐eli tak to funkcja zwraca warto╢µ tej parametru i funkcji silnia o parametrze o jeden mniejszym, je┐eli nie zwraca warto╢µ 1. Tak wiΩc wydaje siΩ, ┐e wszystko to jest liczone od ty│u (zaczynaj▒c od 4). Ot≤┐ nie. Liczone jest w takiej samej kolejno╢ci jak pierwsza mo┐liwo╢µ. To koniec teorii, teraz praktyka, czyli wracamy do przeszukiwarki...</p>
<p align="justify">Pierwsze co musimy napisaµ to sam element przeszukiwawczy. Wygl▒da on tak:<br><br>
<pre>function szukaj($w) {
global $ilosc;
global $co;
global $katal;
$kat = dir($w);
$i=0;
while($nazwa=$kat->read()) {
$tab[$i]=$nazwa;
++$i;
}
for($i=0;$i<count($tab);$i++) {
if(strpos($tab[$i],".")==0&&$i>1) {
szukaj($w."/".$tab[$i]);
}
else {
list($nazwa, $rozszerz) = explode(".",$tab[$i]);
if($rozszerz=="htm") {
$il=sprawdz($w."/".$tab[$i]);
if($il>0) {
$ilosc[] = $il;
$co[] = $tab[$i];
$katal[] = $w;
}
}
}
}
}</pre>
<p align="justify">BΩde t│umaczy│ po linijce. Pierwsza to oczywi╢cie nag│≤wek funkcji o jednym parametrze: w. Oznacza on katalog, kt≤ry funkcja ma przeszukaµ. MuszΩ tutaj dodaµ, ┐e rekurencja nie jest potrzebna przy serwisach, w kt≤rych strony przechowywana jest w g│≤wnym katalogu i katalogach, w kt≤rych ju┐ nie ma katalog≤w. Trzy kolejne linie ustalaj▒, ┐e ilosc, co i katal co zmiennymi globalnymi. S▒ to zmienne typu tablicowego i to w nich bΩdziemy przechowywaµ odpowiednio: ilo╢µ wyszukanych s│≤w odpowiadaj▒cych zapytaniu, nazwΩ pliku z rozszerzeniem oraz katalog w kt≤rym owy siΩ znajduje. W kolejnej linijce tworzymy obiekt kat klasy dir(), zdefiniowanej pierwotnie przez tw≤rc≤w PHP. Klasa posiada metody pozwalaj▒ce odczytywaµ nazwy zawartych w katalogu plik≤w i innych katalog≤w. KlasΩ tΩ wywo│ujemy dla warto╢ci naszego parametru w (katalogu przeszukiwanego). Tworzymy zmienn▒ i o warto╢ci 0, kt≤ra bΩdzie przechowywa│a ilo╢µ element≤w znajduj▒cych siΩ w katalogu. Dalej jest pΩtla odczytuj▒ca nazwy tych element≤w i umieszczaj▒ca je w tablicy o nazwie tab. No i kolejna pΩtla. Tym razem sprawdzamy na pocz▒tku tej pΩtli czy w nazwie elementu katalogu jest kropka (czyli czy jest plikiem), je┐eli nie to wywo│ujemy funkcjΩ szukaj dla parametru o warto╢ci tego katalogu kt≤ry teraz jest przeszukiwany + znak "/" + nazwa elementu katalogu. Je┐eli tak to dzielimy nazwΩ na dwie czΩ╢ci: nazwΩ i rozszerzenie. Potem sprawdzamy czy rozszerzenie jest r≤wne "htm", czyli czy jest dokumentem html. Oczywi╢cie mo┐na to zmieniµ na dowolne rozszerzenie. Zapisuje warto╢µ funkcji sprawdz(), kt≤rej bΩdzie za chwilΩ, do zmiennej il. Je┐eli il bΩdzie wiΩkszy od 0 (czyli w pliku bΩd▒ wystΩpowa│y wyrazy o warto╢ci takiej samej jak zapytanie) to dodajemy do tablic globalnych ilosc, co i katal odpowiednie warto╢ci: ilo╢µ wyraz≤w pasuj▒cych do zapytania, nazwa pliku wraz z rozszerzeniem oraz katalog w kt≤rym znajduje siΩ owy plik. I to koniec naszej pΩtli i funkcji. Je┐eli nie zrozumia│e╢ to albo przeczytaj to jeszcze raz, albo uwierz, ┐e to dzia│a...</p>
<p align="justify">Teraz zabierzemy siΩ za funkcjΩ sprawdzaj▒c▒ ile jest wyraz≤w pasuj▒cych do zapytania, czyli do sprawdz(). Oto jej listing:<br><br>
<pre>function sprawdz($plik) {
global $lancuch;
$il=0;
$file = fopen($plik,"r");
while(!feof($file)) {
$linia = strtoupper(fgets($file,100));
$pozycja = strpos($linia,$lancuch[0]);
if(is_integer($pozycja)) {
while(is_integer($pozycja)) {
$l=strstr($linia,$lancuch);
$m=strstr($linia,".".$lancuch);
if(strlen($l)>0&&!$m) {
$linia=substr($l,strlen($lancuch)-1);
++$il;
}
else break;
$pozycja = strpos($linia,$lancuch[0]);
}
}
}
fclose($file);
return $il;
}</pre>
<p align="justify">Pierwsza linia to oczywi╢cie nag│≤wek funkcji sprawdz() z parametrem plik. To w│a╢nie plik, w kt≤rym bΩdziemy szukali zapytania. Potem ustalana jest zmienna lancuch jako globalna. Zmienna lancuch przechowuje zapytanie z wyszukiwarki. NastΩpnie ustalamy warto╢µ zmiennej il, przechowuj▒cej ilo╢µ odnalezionych wyraz≤w, jako 0. Otwieramy do odczytu nasz plik. Tworzymy pΩtle ko±cz▒c▒ siΩ w momencie odczytania pliku do ko±ca. Pobieramy liniΩ z pliku i zamieniamy wszystkie literki na wielkie. Potem pobieramy pozycjΩ pierwszego znaku z zapytania w lini. Je┐eli jest wiΩksza od zera to tworzymy pΩtle, kt≤ra bΩdzie dzia│a│a, a┐ w linii pierwszego znaku z zapytania nie bΩdzie. Odnajdujemy pierwsze wyst▒pienie zapytania i od tego miejsca zapisujemy liniΩ w zmiennej l. Potem wyszukujemy jeszcze w pliku │a±cucha o warto╢ci: "."+zapytanie. Sprawdzamy czy odnaleziono zapytanie w linii, poprzez sprawdzenie d│ugo╢ci │a±cucha l, oraz czy przed tym odnalezionym zapytaniem znajdowa│a siΩ kropka (jest to istotne, je┐eli przy wyszukiwaniu nie chcemy braµ pod uwagΩ link≤w i osoba szukaj▒ca mo┐e poszukiwaµ zwrot≤w PHP i HTML, poniewa┐ na stronie mog▒ znajdowaµ siΩ odno╢niki do stron o rozszerzeniu .php i .html). Je┐eli kropki nie odnalaz│ a odnaleziono to zapytanie, skrypt ucina przeszukiwan▒ liniΩ od miejsca pocz▒tku odnalezionego │a±cucha do jego ko±ca i zwiΩksza ilo╢µ odnalezionych zapyta±. W innym wypadku przerywa pΩtle. Potem znowu wyszukuje miejsca pierwszego wyst▒pienia pierwszego znaku z zapytania. To ko±czy pΩtle, zapytanie i pΩtle sprawdzaj▒c▒ czy jest ju┐ koniec pliku. Potem zamykamy ten plik i zwracamy warto╢µ zmiennej il, czyli ilo╢µ odnalezionych zapyta± w pliku. I to koniec ten funkcji. Zastosuj siΩ do instrukcji podanej pod koniec ostatniego opisu funkcji.</p>
<p align="justify">No i teraz zako±czenie naszego skryptu, czyli korzystanie z funkcji szukaj() i wy╢wietlanie wynik≤w przeszukiwania. Oto listing:<br><br>
<pre>$ilosc = array();
$co = array();
$katal = array();
$lancuch = strtoupper($lancuch);
szukaj("/www");
$zmienna=0;
if(count($ilosc)>0) {
for($i=0;$i<count($ilosc);$i++)
for($j=$i+1;$j<count($ilosc);$j++)
if($ilosc[$j]>$ilosc[$i]) {
$zmienna=$ilosc[$j];
$ilosc[$j]=$ilosc[$i];
$ilosc[$i]=$zmienna;
$zmienna=$co[$j];
$co[$j]=$co[$i];
$co[$i]=$zmienna;
$zmienna=$katal[$j];
$katal[$j]=$katal[$i];
$katal[$i]=$zmienna;
}
for($i=0;$i<count($ilosc);$i++) {
echo "W <a href=\"".$katal[$i]."/".$co[$i]."\">
".$katal[$i]."/".$co[$i]."
</a> znaleziono ".$ilosc[$i]." takich wyra┐e±<br>\n";
}
}
else echo "Nie znaleziono!";</pre>
<p align="justify">Na pocz▒tku tworzymy trzy puste tablice o nazwach: ilosc, co i katalog, kt≤rych funkcje wyja╢ni│em wcze╢niej. Potem wszystkie literki z zapytania, kt≤re przechowujemy w zmiennej lancuch, zamieniamy na wielkie. Jest to potrzebne przy przeszukiwaniu, je┐eli chcemy, ┐eby skrypt nie zwraca│ uwagi na wielko╢µ liter. Potem uruchamiamy nasz▒ funkcjΩ szukaj() dla parametru l r≤wnemu dok│adnemu adresowi katalogu w kt≤rym jest strona (u mnie "/www"). Je┐eli chcesz przetestowaµ ten skrypt u siebie w domu na Windowsie, to wiedz, ┐e aby przeszukaµ dowolny katalog, dajmy c:\www, musisz wpisaµ tak jak ja /www. Przy c:\www\costam wpisujesz /www/costam. Wracam do skryptu... Nadajemy zmiennej warto╢µ 0. Zmienna bΩdzie u┐ywana do porz▒dkowania informacji w tablicach jako miejsce gdzie bΩdziemy chwilowo przechowywaµ informacje z kom≤rki tablicy. Je┐eli ilo╢µ element≤w z tablicy ilosc (i zarazem wszystkich innych) jest wiΩksza od zera to porz▒dkujemy informacje z tablic. W innym wypadku wy╢wietlamy napis "Nie znaleziono!". Na czym polega porz▒dkowanie informacji. Ot≤┐ ustawimy tak elementy tablic, by u│o┐y│y siΩ w kolejno╢ci od najwiΩkszej ilo╢ci odnalezionych wyraz≤w w pliku do najmniejszej. Zrobimy to tzw. metod▒ b▒belkow▒. Zworzymy pΩtle for od 0 do ko±ca tablic (o zmiennej przechowuj▒cej stan pΩtli i), w niej drug▒ pΩtle od aktualnej warto╢ci w pΩtli pierwszej (czyli warto╢ci i) do ko±ca tablic (o zmiennej przechowuj▒cej stan pΩtli j). W niej pytamy siΩ czy warto╢µ elementu tablicy ilosc o indeksie j jest wiΩksza od elementu o indeksie i. Je┐eli tak zapisujemy do naszej zmiennej zmienna warto╢µ elementu tablicy o indeksie j, jako ten element podstawiamy kom≤rkΩ o indeksie i, a jako kom≤rkΩ tablicy o indeksie i podstawiamy warto╢µ zmiennej, czyli poprzedni▒ warto╢µ elementu j tablicy ilosc. Tak samo robimy przy kolejnych tablicach. Ko±czymy zapytanie, potem obie pΩtle. Tworzymy pΩtle for od 0 do ko±ca tablicy ilosc. Wypisuje ona taki tekst: "W <a href="katalog/costam.htm">katalog/costam.htm</a> znaleziono x takich wyra┐e±", gdzie katalog to katalog w kt≤rym znajduje siΩ strona (oczywi╢cie katalog≤w mo┐e byµ wiΩcej), a costam to nazwa strony i x to liczba odnalezionych wyra┐e±. I tym ko±czymy pierwsz▒ wyszukiwarkΩ. Oto jej listing:<br>
<pre><?PHP
function sprawdz($plik) {
global $lancuch;
$il=0;
$file = fopen($plik,"r");
while(!feof($file)) {
$linia = strtoupper(fgets($file,100));
$pozycja = strpos($linia,$lancuch[0]);
if(is_integer($pozycja)) {
while(is_integer($pozycja)) {
$l=strstr($linia,$lancuch);
$m=strstr($linia,".".$lancuch);
if(strlen($l)>0&&!$m) {
$linia=substr($l,strlen($lancuch)-1);
++$il;
}
else break;
$pozycja = strpos($linia,$lancuch[0]);
}
}
}
fclose($file);
return $il;
}
function szukaj($w) {
global $ilosc;
global $co;
global $katal;
$kat = dir($w);
$i=0;
while($nazwa=$kat->read()) {
$tab[$i]=$nazwa;
++$i;
}
for($i=0;$i<count($tab);$i++) {
if(strpos($tab[$i],".")==0&&$i>1) {
szukaj($w."/".$tab[$i]);
}
else {
list($nazwa, $rozszerz) = explode(".",$tab[$i]);
if($rozszerz=="htm") {
$il=sprawdz($w."/".$tab[$i]);
if($il>0) {
$ilosc[] = $il;
$co[] = $tab[$i];
$katal[] = $w;
}
}
}
}
}
$ilosc = array();
$co = array();
$katal = array();
$lancuch = strtoupper($lancuch);
szukaj("/www");
$zmienna=0;
if(count($ilosc)>0) {
for($i=0;$i<count($ilosc);$i++)
for($j=$i+1;$j<count($ilosc);$j++)
if($ilosc[$j]>$ilosc[$i]) {
$zmienna=$ilosc[$j];
$ilosc[$j]=$ilosc[$i];
$ilosc[$i]=$zmienna;
$zmienna=$co[$j];
$co[$j]=$co[$i];
$co[$i]=$zmienna;
$zmienna=$katal[$j];
$katal[$j]=$katal[$i];
$katal[$i]=$zmienna;
}
for($i=0;$i<count($ilosc);$i++) {
echo "W <a href=\"".$katal[$i]."/".$co[$i]."\">
".$katal[$i]."/".$co[$i]."
</a> znaleziono ".$ilosc[$i]." takich wyra┐e±<br>\n";
}
}
else echo "Nie znaleziono!";
?></pre></p>
<h3>Przeszukiwarka bazy danych</h3>
<p align="justify">Przeszukiwanie bazy danych jest o wiele │atwiejsze, a to dlatego, ┐e bazy danych s│u┐▒ w│a╢nie │atwiejszemu wyszukiwaniu. Wystarczy wpisanie <code>SELECT * FROM tabela WHERE kolumna='3'</code> i wy╢wietl▒ nam siΩ wszystkie wiersze bazy, kt≤rych kolumna ma warto╢µ 3. Jednak jak pewnie zauwa┐y│e╢ zapytanie SQL szuka tylko kolumny o tej warto╢ci i ┐adnej innej. Przy przeszukiwaniu bazy w celu znalezienia jakiego╢ wyra┐enia kolumna na pewno nie bΩdzie mia│a takiej samej warto╢ci jak szukane wyra┐anie. S│owo to bΩdzie siΩ znajdowa│o w╢r≤d dziesi▒tek, setek a nawet tysiΩcy innych wyraz≤w. Dlatego ┐eby znale╝µ jakie╢ wyra┐enie w ca│ej zawarto╢ci kolumny nale┐y u┐yµ zapytania SQL <code>SELECT * FROM tabela WHERE kolumna LIKE '%$zapytanie%'</code>. Wtedy zostan▒ odnalezione wszystkie wiersze w kt≤rych kolumna zawiera szukane zapytanie. Zapewne zauwa┐y│e╢ znaczki "%" ko│o zmiennej zapytanie. To w│a╢nie one oznaczaj▒, ┐e mog▒ istnieµ znaki ko│o zapytania. Jeden znak obok zapytania jest oznaczany "_". No to zabierzmy siΩ za skrypt. Oto jego tre╢µ:<br>
<pre><?PHP
$pol = mysql_connect();
mysql_select_db("jasio");
$wyn = mysql_query("SELECT * FROM strony WHERE zawartosc
LIKE '%$lancuch%' ORDER BY id");
$id = array();
$il = array();
$tytul = array();
if(mysql_num_rows($wyn)>0) {
while($tab = mysql_fetch_array($wyn)) {
$ill = 0;
do {
$l = strstr($tab['zawartosc'],$lancuch);
$m = strstr($tab['zawartosc'],".".$lancuch);
if(strlen($l)>0&&!$m) {
$tab['zawartosc'] = substr($l,strlen($lancuch));
++$ill;
} else break;
$pozycja = strpos($tab['zawartosc'],$lancuch[0]);
} while(is_integer($pozycja));
$il[] = $ill;
$id[] = $tab['id'];
$tytul[] = $tab['tytul'];
}
for($i=0;$i<count($il);$i++)
for($j=$i+1;$j<count($il);$j++)
if($il[$j]>$il[$i]) {
$zmienna=$il[$j];
$il[$j]=$il[$i];
$il[$i]=$zmienna;
$zmienna=$id[$j];
$id[$j]=$id[$i];
$id[$i]=$zmienna;
$zmienna=$tytul[$j];
$tytul[$j]=$tytul[$i];
$tytul[$i]=$zmienna;
}
for($i=0;$i<count($il);$i++) {
echo "W <a href=\"strona.php?id=".$id[$i]."\">
".$tytul[$i]."</a>
odnaleziono ".$il[$i]."
takich wyra┐e±!<br>\n";
}
}
else echo "Wyraz≤w pasuj▒cych do zapytania nie odnaleziono!";
?></pre>
<p align="justify">Pierwsze trzy linijki to rozpoczΩcie skryptu PHP, │▒czenie siΩ do systemu baz danych MySQL i wyb≤r bazy danych. Teraz szukamy w tabeli strony w kolumnie zawartosc nasz lancuch. Za│o┐y│em tutaj, ┐e tabela jest tworzona przez polecenie:<br>
<pre>CREATE TABLE strony(
id int,
autor varchar(30),
email varchar(30),
tytul text,
zawartosc text)</pre>
<p align="justify">Teraz tworzymy trzy tablice: id, il i tytul, kt≤re bΩd▒ przechowywa│y odpowiednio id odnalezionej strony, ilo╢µ wyst▒pie± wyra┐enia na tej stronie i tytu│ strony. Teraz sprawdzamy czy ilo╢µ wierszy obiΩtych zapytaniem SQL jest wiΩksza od zera. Je┐eli nie to wy╢wietla siΩ napis: "Wyraz≤w pasuj▒cych do zapytaniem nie odnaleziono!". Je┐eli tak to tworzymy pΩtle, kt≤ra "╢ci▒ga" nazwy i warto╢ci kolumn z wynik≤w wyszukiwania. Przypisujemy zmiennej ill warto╢µ 0. Zmienna ta bΩdzie przechowywa│a ilo╢µ wyst▒pie± │a±cucha w aktualnej stronie. Teraz otwieramy pΩtle do while(), dzia│aj▒c▒ do p≤ki w zmiennej tab['zawartosc'] odnajdywany jest pierwszy znak z │a±cucha. W pΩtli przypisujemy warto╢µ zmiennej l r≤wn▒ odciΩtej od pocz▒tku wyst▒pienia naszego zapytania a┐ do ko±ca zawarto╢ci strony. Potem przypisujemy zmiennej m warto╢µ odciΩtej od fragmentu: ".$lancuch" do ko±ca zawarto╢ci strony. Teraz sprawdzamy czy │a±cuch siΩ zawiera w zawarto╢ci strony, czyli czy dlugo╢µ l jest wiΩksza od 0 oraz czy m ma warto╢µ FALSE, czyli czy przed wystΩpuj▒cym w bazie │a±cuchu nie znajduje siΩ kropka. Je┐eli zapytanie bΩdzie mia│o warto╢µ TRUE to ucinamy zmienna tab['zawartosc'] do miejsca gdzie ko±czy│o siΩ w niej wyra┐enie szukane i zwiΩkaszmy ill o 1. Je┐eli warto╢µ FALSE to przerywamy pΩtle. Sprawdzamy potem pozycjΩ pierwszej litery zapytania w zmiennej tab['zawartosc'], czyli zmiennej przechowuj▒cej zawarto╢µ ca│ej strony. Potrzebne to jest do pΩtli. Po zako±czeniu pΩtli dodajemy do tablic il, id i tytul nowe elementy zawieraj▒ce informacje o tej stronie. Potem ko±czymy pΩtle "╢ci▒gaj▒c▒" wiersze do tablicy i sortujemy informacje zawarte w tablicach id, il i tytul metod▒ b▒belkow▒ wed│ug warto╢ci il. Na ko±cu wy╢wietlamy wyniki wyszukiwania. Tutaj za│o┐y│em, ┐e skryptem wy╢wietlaj▒cym poszczeg≤lne strony jest strona.php, a identyfikatorem strony jest id. I to wszystko je┐eli chodzi o przeszukiwarkΩ bazy.</p>
<h3>Przeszukiwanie bazy ze s│owami kluczowymi</h3>
<p align="justify">Jest to najprostszy algorytmicznie spos≤b do przeszukiwania stron. Nie potrzebne bΩdzie ju┐ tu sortowanie wed│ug ilo╢ci znalezionych wyra┐e±, bo przecie┐ bΩdziemy operowali na s│owach kluczowych. BΩdzie nam tu potrzebna tabela utworzona w ten spos≤b:<br>
<pre>CREATE TABLE strony(
id int,
autor varchar(30),
email varchar(30),
tytul text,
slowak text,
zawartosc text,
data date)</pre>
<p align="justify">Kolumna slowak to oczywi╢cie s│owa kluczowe, a data to data dodania strony. Oto ca│y skrypt przeszukiwarki:
<pre><?PHP
$pol = mysql_connect();
mysql_select_db("jasio");
$lancuch = strtolower($lancuch);
$wyn = mysql_query("SELECT * FROM teksty WHERE slowak
<p align="justify">Na pocz▒tku │▒czymy siΩ z baz▒ "jasio", potem zamieniamy wszystkie literki z zapytania na ma│e. Wyszukujemy w bazie wierszy kt≤rych kolumna slowak zawiera lancuch porz▒dkuj▒c wed│ug wielko╢ci id (od najmniejszego do najwiΩkszego). Je┐eli ilo╢µ takich wierszy jest wiΩksza od 0, czyli je┐eli istniej▒ takie wiersze, to w pΩtli "╢ci▒gamy" informacje z bazy do tablicy asocjacyjnej i wy╢wietlamy tekst. Zak│ada│em w nim, ┐e skryptem ob│uguj▒cym strony jest strona.php. Je┐eli nie ma wierszy w kt≤rych kolumnie slowak zawarty jest lancuch to wy╢wietla tekst: "Nie znaleziono!".</p>
<h3>Zako±czenie</h3>
<p align="justify">Mam nadzieje, ┐e ten artyku│ przybli┐y│ wam chocia┐ troche metody przeszukiwawcze. Oczywi╢cie wszystkie skrypty, kt≤re tu umie╢ci│em s▒ mojego autorstwa i mo┐esz ich u┐ywaµ na swojej stronie.</p>
<td width="770" valign="top" colspan="3" align="right"><br><br><span class="m">All rights reserved by <a href="mailto:web-area@web-area.org">J&J Filipowscy Design & Code</a></td>