1
Hallo Jörg
ich benötige bitte hier noch mal deine Hilfe.
Hab im google schöne db suche gefunden, schaffe es aber nicht es für mich anzupassen.
Die u.a. Suche berücksichtigt alles was in meiner DB gespeichert ist.
Das brauche ich nicht.
Gerne würde ich nur Tabelen und Felde durchsuchen, die in Frage kommen.
Könntest du mir bitte den Code so ändern?
Also in der DB soll die Tabelle: "apx_objects" durchsucht werden und zwar in dieser Tabelle die Felder: "ort", "teilort", "ortplz", "strasse".
Die Ausgabe soll der Wert aus dem Feld: "region_id" sein.
Es geht natürlich einfacher mit einer MSQL Suche ( hatte ich schon ) aber in diesem Code werden alle Wörter berücksichtigt die per $_GET aus dem Formular übergeben wurden.
Bitte sag Bescheid, wenn du noch Infos benötigst.
Vielen Dank
schurik
ich benötige bitte hier noch mal deine Hilfe.
Hab im google schöne db suche gefunden, schaffe es aber nicht es für mich anzupassen.
Die u.a. Suche berücksichtigt alles was in meiner DB gespeichert ist.
Das brauche ich nicht.
Gerne würde ich nur Tabelen und Felde durchsuchen, die in Frage kommen.
Könntest du mir bitte den Code so ändern?
Also in der DB soll die Tabelle: "apx_objects" durchsucht werden und zwar in dieser Tabelle die Felder: "ort", "teilort", "ortplz", "strasse".
Die Ausgabe soll der Wert aus dem Feld: "region_id" sein.
Es geht natürlich einfacher mit einer MSQL Suche ( hatte ich schon ) aber in diesem Code werden alle Wörter berücksichtigt die per $_GET aus dem Formular übergeben wurden.
Bitte sag Bescheid, wenn du noch Infos benötigst.
Vielen Dank
schurik
<?php
//-- pre-condition ---------------------------------------------------------------------------------
//-- example input ---------------------------------------------------------------------------------
$sSearch = $_GET['search'];
//--------------------------------------------------------------------------------------------------
function mysqlSearch($sSearch)
{
// replace multiple whitespaces with a simple blank
$aSearch = explode(' ', preg_replace('#\s+#', ' ', $sSearch));
// count search words once
$iSearch = count($aSearch);
if ($iSearch == 0) {
return array();
}
// remove addslashes (automatically executed by php) and use mysql_real_escape_string instead. it's more secure against sql injection
if (get_magic_quotes_gpc()) {
$aSearch = array_map('stripslashes', $aSearch);
}
$aSearch = array_map('mysql_real_escape_string', $aSearch);
// get all tables in selected database
$sSQL1 = 'SHOW TABLES';
$rRes1 = mysql_query($sSQL1);
// save hits
$aHits = array();
while ($aTable = mysql_fetch_array($rRes1)) {
$sTable = $aTable[0];
// get all columns from each table
$sSQL2 = "SHOW COLUMNS FROM `$sTable`";
$rRes2 = mysql_query($sSQL2);
// combine search words with columns
$aPermutation = array();
while ($aColumn = mysql_fetch_assoc($rRes2)) {
$sColumn = $aColumn['Field'];
for ($i = 0; $i < $iSearch; $i++) {
$sSearchword = $aSearch[$i];
$aPermutation[] = "`$sColumn` LIKE '%$sSearchword%'";
}
}
// combine as OR-condition
$sSQL4 = "SELECT * FROM `$sTable` WHERE " . implode(' OR ', $aPermutation);
$rRes4 = mysql_query($sSQL4);
// collect result
while ($aHit = mysql_fetch_assoc($rRes4)) {
$aHits[$sTable][] = $aHit;
}
}
return $aHits;
}
//-- example output --------------------------------------------------------------------------------
echo '<pre>', print_r(mysqlSearch($sSearch), true), '</pre>';
//--------------------------------------------------------------------------------------------------
?>