Ez a tutorial a PHP Tutorial videó sorozatnál feltett kérésre készül. A posztban bemutatott kereső felhasználók között keres, természetesen a logika alapján MYSQL-ben tárolt oldalakban, vagy tartalmakban is kereshet. A kereső tesztelése miatt hozzunk létre egy adatbázis, illetve táblát a következő struktúrával:
CREATE TABLE IF NOT EXISTS `users` ( `id` int(10) NOT NULL AUTO_INCREMENT, `user` varchar(30) NOT NULL, `password` varchar(42) NOT NULL, PRIMARY KEY (`id`), KEY `user` (`user`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; |
Készítsünk egy kereso.html fájlt a keresőnek (az űrlapot meglévő oldalba is lehet illeszteni):
<html> <head></head> <body> <form action="search.php" method="GET"> <input type="text" name="keres" /> <input type="submit" /> </form> </body> </html> |
Hozzuk létre a search.php fájlt ami végzi a keresést:
<html> <head> </head> <body> <?php #mysqli kapcsolódás $dbh = mysqli_connect(); if(isset($_GET['keres'])){ # az isset függvény segítségével megvizsgáljuk,hogy létezik-e a GET tömbben lévő 'keres' kulcs $keres = $_GET['keres']; if(!empty($keres)){ # ellenőrizzük nem-e üres a kapott változó $keres = trim($keres); # eltávolítjuk a szóközt az elejéről és végéről $query = mysqli_query($dbh,"SELECT * FROM `users` WHERE `username` LIKE '%$keres%' "); if(mysqli_affected_rows($dbh) > 0){ #amennyiben van találat kiírjuk echo 'Találatok:'; while($sor = mysqli_fetch_assoc($query)){ echo $sor['username']; echo '<br/>'; } }else{ echo 'Nincs találat'; } }else{ echo 'Üres keresőmező'; # esetleg visszairányítás: //header('Location: kereso.html'); } }else{ echo 'Közvetlen meghívás nem engedélyezett!'; } ?> </body> </html> |
Egy kis kiegészítés a kódhoz, hogy minimális védelem is legyen benne:
A kis kiegészítésem lényege az alábbi függvény:
A < /pre> véletlenül rossz helyre került az előző kommentemben :D Harder, légyszíves ha tudod, akkor javítsd :) (Ezt a hozzászólást pedig törölheted)
én nem tettem volna bele ennyi elágazást.
Rögtön az első változó vizsgálatnál nem isset, hanem if ($keres != ”) { …
És nem iratnék ki üzenetet arra, hogy közvetlen hívás. Hiszen ha üres a $keres értéke, illetve nincs is, úgy is a másik ág fut le. És célszerű egy iframe keretet beilleszteni a form alá és oda meghívni a php-t. Nem navigálja el a user böngészőjét, nem kell újra rajzolnia az oldalt.
Üdv! a : $dbh = mysqli_connect(); véletlen nincs el írva?
csak mert nem működik..
Szia,
A mysqli_connectnek így kell kinéznie: mysqli_connect(“host”,”felhasznalo”,”jelszo”,”adatbazis”)