Seiteninterne Suche

Hallo,

ich probiere gerade eine Suchfunktion hinzubekommen klappt momentan aber nur nicht so ganz. Wäre prima wenn mir hier jemand einen Tipp oder zwei oder drei geben könnte.

Code bisher:
PHP:
<?
echo " <form name='form1' method='post'  action='index.php?action=suche'>\n";
echo "<input name='suche' type='text' maxlenght='255' size='20' value='".$_POST['suche']."'>\n";
echo "<input type='submit' name='Submit' value='Senden'>\n";
echo "<input type='reset' name='Submit' value='Reset'>\n</form>";

$sqldatabase = mysql_pconnect("host","db","pw") or die('<b>#'.mysql_errno().':</b> '.mysql_error());
mysql_select_db(tbus, $sqldatabase) or die('<b>#'.mysql_errno().':</b> '.mysql_error());

$daten = mysql_query('SELECT * FROM * WHERE `*`=\''.$_POST['suche'].'\'', $sqldatabase);
while($row=mysql_fetch_array($daten)){
echo $row['*'];
}
?>


Ich möchte natürlich das alle Datensätze in der DB durchsucht werden deswegen die * wenn ich die durch Kommata oder anderweitig verknüpfen kann, ist es mir nicht bekannt.
 
Also Grob gesagt, man macht ein Explode um anhand von leerzeichen zu zerteilen... und macht dann für jedes Wort einen Sucheblock wo man mit LIKE %$wort% alle in Frage kommenden Spalten angibt. Die Ganzen Blöcke werden mit AND verknüpft...

Hier ein Rauskopiertes Beispiel von einer kleinen Site:

PHP:
    $searchpattern = stripslashes(trim($searchpattern));
    $search = '';
    // da per JS ausgelöst kommen auch undefined manchmal vor
    if($searchpattern != '' && $searchpattern != 'undefined'){
        // als erstes mit "" eingeschlossene Inhalte finden die nicht zerlegt werden
        preg_match_all('%"(.*)"%', $searchpattern, $ergebniss);
        $string         = trim(ereg_replace('"(.*)"','',$searchpattern));
        $string         = ereg_replace(' +',' ',$string);

        // übrige Zerteilen
        $ergebniss2     = explode(' ', $string);
        $sucharray      = array_merge($ergebniss[1], $ergebniss2);

       // Pattern zusammenbauen
        for($i=0; $i<count($sucharray); $i++){
            if($sucharray[$i] == '') continue 1;

            $search .= ' AND ';
            $search .= "(`nummer` LIKE '%".$sucharray[$i]."%'
             OR `vorname` LIKE '%".$sucharray[$i]."%'
             OR `gebname` LIKE '%".$sucharray[$i]."%'
             OR `ort` LIKE '%".$sucharray[$i]."%'
             OR `postleitzahl` LIKE '%".$sucharray[$i]."%'
             OR `hausnummer` LIKE '%".$sucharray[$i]."%'
             OR `firma1` LIKE '%".$sucharray[$i]."%'
             OR `strasse` LIKE '%".$sucharray[$i]."%'
             )";
        }
    }
$sql = "SELECT * FROM `user` WHERE `online` = 1 $search LIMIT 50";
 
Vielen Dank.

Wenn ich mehrere Tabellen habe wo gesucht werden soll, und die habe ich, kann ich dann für die Tabellen ein * setzen bei dem mysql_connect (SELECT * FROM * - also) ?
Und dann wie in Deinem Beispiel die Arrays nutzen um die einzelnen Spalten zu durchsuchen, oder muss ich das dann anders handhaben?
 
Zurück