Wat is LIKE en wat kun je ermee ?
LIKE is een keyword die gebruikt kan worden om de MySql database te door zoeken.
Hoe gebruik ik LIKE ?
LIKE wordt altijd gebruikt in combinatie met het sql statment SELECT.
We gaan beginnen met contact maken met de mysql database.
Dat kun je op de volgende manier doen.
PHP Code:
<?
$host = "localhost";
$user = "username";
$pass = "password";
$database = "Naamvandedatabase";
mysql_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($database) or die (mysql_error());
?>
|
Nu we dit voor elkaar hebben ga we over naar de zoek query.
dit doen we in combinatie van de zoek formulier.
PHP Code:
<?
$host = "localhost";
$user = "username";
$pass = "password";
$database = "Naamvandedatabase";
mysql_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($database) or die (mysql_error());
if(isset($_POST['submit'])){
$select = "SELECT recordnaam FROM tabelnaam WHERE recordnaam LIKE'%".$_POST['zoekveld']."%'";
$sql = mysql_query($select) or die (mysql_error());
$aantal_records = mysql_num_rows($sql);
if(!$aantal_records > 0){
echo "Er zijn geen records gevonden";
} else {
echo "Er zijn ".$aantal_records." gevonden";
while($row = mysql_fetch_assoc($sql)){
echo $row['recordnaam'];
}
}
} else {
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
echo "<input type='text' name='zoekveld'>";
echo "<input type='submit' name='submit' value='zoeken'>";
echo "</form>";
}
?>
|
je kunt de query ook op een ander manier invullen wanneer je wilt zoeken op bijv. Drop
en hij moet alle resultaten weergeven waar het woord drop in voor aanstaat kun je dat op de
volgende manier doen
PHP Code:
<?
$select = "SELECT recordnaam FROM tabelnaam WHERE recordnaam LIKE'%".$_POST['zoekveld']."'";
$sql = mysql_query($select) or die (mysql_error());
?>
|
Waneer je zou willen dat hij alle resultaten weergeeft met het woord drop achteraan kun je dat op de volgende manier doen
PHP Code:
<?
$select = "SELECT recordnaam FROM tabelnaam WHERE recordnaam LIKE'".$_POST['zoekveld']."%'";
$sql = mysql_query($select) or die (mysql_error());
?>
|
Nadeel van LIKE: LIKE doorzoekt met elk ingevulde karater de gehele database.
Nadeel hier van is dat het laden van je site en mysql database behoorlijk traag kan worden.
Er is nog een manier om te zoeken in de mysql database. Deze manier heet FULLTEXT SEARCH FUNCTIE.
Deze functie kun je alleen toepassen op varchar, char en text kolomen die ingesteld zijn op fulltext.
*Hoe kan ik het gebruiken ?
Binnen de Fultext Search gebruik je de volgende 2 functies.
- Match
- Against
Deze 2 functies gaan niet zonder elkaar.
Voordeel van deze zoek methode is dat je gerichter kan zoeken in de mysql database. Ik zal jullie laten zien hoe je deze zoek functie kan toepassen.
vergeet niet de velden waarin je wilt zoeken op fulltext te zetten
We gaan beginnen met contact maken met de MySql database.
PHP Code:
<?
$host = "localhost";
$user = "username";
$pass = "password";
$database = "Naamvandedatabase";
mysql_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($database) or die (mysql_error());
?>
|
Nu we dit voor elkaar hebben ga we over naar de zoek query.
dit doen we in combinatie van de zoek formulier.
PHP Code:
<?
$host = "localhost";
$user = "username";
$pass = "password";
$database = "Naamvandedatabase";
mysql_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($database) or die (mysql_error());
if(isset($_POST['submit'])){
$select = "SELECT recordnaam FROM tabelnaam WHERE MATCH (recordnaam) AGAINST('".$_POST['zoekveld']."')";
$sql = mysql_query($select) or die (mysql_error());
$aantal_records = mysql_num_rows($sql);
if(!$aantal_records > 0){
echo "Er zijn geen records gevonden";
} else {
echo "Er zijn ".$aantal_records." gevonden";
while($row = mysql_fetch_assoc($sql)){
echo $row['recordnaam'];
}
}
} else {
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
echo "<input type='text' name='zoekveld'>";
echo "<input type='submit' name='submit' value='zoeken'>";
echo "</form>";
}
?>
|
Je kun ook op een makkelijke manier in meerdere tabellen en kolomen zoeken.
De tabellen & kolommen worden geschijden door een komma hiermee geef je aan dat hij ook in de achterligende tabellen/kolomen moet zoeken.
PHP Code:
<?
$host = "localhost";
$user = "username";
$pass = "password";
$database = "Naamvandedatabase";
mysql_connect($host, $user, $pass) or die (mysql_error());
mysql_select_db($database) or die (mysql_error());
if(isset($_POST['submit'])){
$select = "SELECT recordnaam FROM tabelnaam WHERE MATCH (recordnaam) AGAINST('".$_POST['zoekveld']."')";
$sql = mysql_query($select) or die (mysql_error());
$aantal_records = mysql_num_rows($sql);
if(!$aantal_records > 0){
echo "Er zijn geen records gevonden";
} else {
echo "Er zijn ".$aantal_records." gevonden";
while($row = mysql_fetch_assoc($sql)){
echo $row['recordnaam'];
}
}
} else {
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'>";
echo "Zoekveld 2 : <input type='text' name='zoekveld'>";
echo "Zoekveld 1 : <input type='text' name='zoekveld1'>";
echo "<input type='submit' name='submit' value='zoeken'>";
echo "</form>";
}
?>
|
Je kun ook gemakkelijk operatoren gebruiken bij deze functie.
operatoren :
+
-
<
>
( )
~
*
"
Hoe kan ik deze operatoren gebruiken?
Je kunt zoeken met operatoren in je formulier op de volgende manier.
Voorbeelden operatoren:
pieter jantje Gaat kijken of deze twee woorden in de database voor komen
+pieter -jantje Zal pieter weergeven en jantje niet
+pieter jantje pieter wordt hoger in het resultaat gezet als jantje
+pieter* Geeft alle resultaten weer waar het woord pieter in voorkomt
"pieter" Geeft alleen als resultaat pieter weer
Als u iets niet snapt kunt u altijd even naar het forum gaan.
|