PHP egyszerű kereső


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>
Kapcsolódó bejegyzések:
  • Ahogy belépek egy magyar nyelvű fórumba ahol webszerkesztés téma is van, olyan nincs, hogy ne találjak olyan kérdést, hogy “Keresés, hogyan?”. Most erre talász i …

  • Na ez egy elég komoly tutorial, php és MySQL kell az elkészítéséhez! Első lépésként csináljunk egy MySQL táblát!CREATE TABLE `shoutbox` ( `id` INT(1 …

  • Ez egy hírküldő script. Működése nagyon egyszerű. Mindössze 3 fájlból áll, és adatbázis alapú a hírek tárolása. A dbconnect.php segítségével kapcsolódik az adat …

  • A tutorial a PHP-n belüli session és MySQL alapú bejelentkezésről szól. Mindent részletesen leírok, nem kell félni! :)Először is: Mi az a SESSION? A s …

  • A gyik.com fórumon elég sokszor felmerült kérdés: hogy lehet login rendszert illeszteni egy honlapba? Íme a feladat egy lehetséges megoldása:tölthető :letöltés / …

A cikket beküldte: kgab0r (http://kgab0r.net)

5 hozzászólás

  1. Fefy says:

    Egy kis kiegészítés a kódhoz, hogy minimális védelem is legyen benne:

    17
    
    $query = mysqli_query($dbh,"SELECT * FROM `users` WHERE `username` LIKE '%".mysqli_real_escape_string($dbh, $keres)."%' ");

    A kis kiegészítésem lényege az alábbi függvény:

    mysqli_real_escape_string();
    
    Ez gyakorlatilag 7 speciális karaktert semlegesít a felhasználóktól beolvasott szövegben (így kisebb valószínűséggel tudnak nem kívánt sql utasításokat lefuttatni az adatbázisunkon). Ezek rendre a NUL (ASCII 0), \n (soremelés), \r (kocsi vissza), \ (backslash, vagyis karakter feloldó), ' (aposztróf), " (idézőjel), and Control-Z (vagyis visszavonás (SUB, ASCII 26) karakter).
  2. Fefy says:

    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)

  3. Gábor says:

    é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.

  4. norbi says:

    Üdv! a : $dbh = mysqli_connect(); véletlen nincs el írva?
    csak mert nem működik..

  5. kgab0r says:

    Szia,

    A mysqli_connectnek így kell kinéznie: mysqli_connect(“host”,”felhasznalo”,”jelszo”,”adatbazis”)

Szólj hozzá
a PHP egyszerű kereső c. bejegyzéshez

- Engedélyezett HTML elemek: <a> <em> <strong> <ul> <ol> <li>
- Forráskód beküldéséhez tedd a kódot ezek közé: <pre lang="php" line="1">Kódrészlet helye itt</pre>