Benötigte Funktionen:
# mysql_connect() (In diesem Scriptbeispiel wird vorausgesetzt, dass die Verbindung zu MySQL bereits besteht)
# explode()
# array()
# foreach()
# implode()
# mysql_query()
# mysql_error()
Die Suchbegriffe können auch von einem Formular kommen..
Suchmodus AND oder OR, kann auch z.B. über RADIO-Inputfelder bestimmt werden
Die Suchbegriffe müssen getrennt werden, damit sie einzeln bearbeitet werden können.
Jeder Suchbegriff muss umgewandelt werden, damit er in einen MySQL-Query eingesetzt werden kann, das %-Zeichen dient als Platzhalter für den möglichen übrigen Text im Datensatz.
Dann müssen die Suchbegriffe wieder zusammengefügt werden mit UND bzw. ODER-Verknüpfung
...und als letztes wird natürlich der MySQL-Query gesendet und die Daten können dann wie üblich ausgegeben werden mit z.B. mysql_fetch_object() oder mysql_fetch_array()...
Hier nochmal das komplette Script:
# mysql_connect() (In diesem Scriptbeispiel wird vorausgesetzt, dass die Verbindung zu MySQL bereits besteht)
# explode()
# array()
# foreach()
# implode()
# mysql_query()
# mysql_error()
PHP-Code:
$keywords = 'in mysql db suchen';
PHP-Code:
$association = 'AND';
PHP-Code:
$keywords = explode(" ",$keywords);
PHP-Code:
$query = array();
foreach($keywords as $keyword) {
$query[] = "( `name_des_ersten_felds` LIKE '%".$keyword."%'
OR `name_des_zweiten_felds` LIKE '%".$keyword."%'
OR `name_des_dritten_felds` LIKE '%".$keyword."%'
OR `und_so_weiter` LIKE '%".$keyword."%')
";
}
PHP-Code:
$query = implode("\n ".$association." ",$query);
PHP-Code:
$sql = "
SELECT *
FROM `name_der_tabelle`
WHERE ".$query."
;"
$res = mysql_query($sql);
if (!$res) {
/**
* Diese Zeilen geben das SQL-Statement in recht lesbarer Form aus.
*/
print '<pre>';
print $sql;
print '</pre>';
/**
* E_USER_ERROR führt zum Abbruch des Scripts.
* E_USER_NOTICE und E_USER_WARNING, lassen das Script weiterlaufen
*/
trigger_error('Datenbankanfrage schlug fehl: '.mysql_error(), E_USER_ERROR);
} else {
/**
* Hier die Routinen zum Auslesen der Suchergebnisse einfügen.
*/
}
Hier nochmal das komplette Script:
PHP-Code:
$keywords = 'in mysql db suchen';
$association = 'AND';
$keywords = explode(" ",$keywords);
$query = array();
foreach($keywords as $keyword) {
$query[] = "( `name_des_ersten_felds` LIKE '%".$keyword."%'
OR `name_des_zweiten_felds` LIKE '%".$keyword."%'
OR `name_des_dritten_felds` LIKE '%".$keyword."%'
OR `und_so_weiter` LIKE '%".$keyword."%')
";
}
$query = implode("\n ".$association." ",$query);
$sql = "
SELECT *
FROM `name_der_tabelle`
WHERE ".$query."
;"
$res = mysql_query($sql);
if (!$res) {
/**
* Diese Zeilen geben das SQL-Statement in recht lesbarer Form aus.
*/
print '<pre>';
print $sql;
print '</pre>';
/**
* E_USER_ERROR führt zum Abbruch des Scripts.
* E_USER_NOTICE und E_USER_WARNING, lassen das Script weiterlaufen
*/
trigger_error('Datenbankanfrage schlug fehl: '.mysql_error(), E_USER_ERROR);
} else {
/**
* Hier die Routinen zum Auslesen der Suchergebnisse einfügen.
*/
}
Kommentar