PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
» MySQL
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
PHP Forum
Mathe Nachhilfe
Suchmaschinenoptimierung

komplette SQL DB nach einem Ausdruck durchsuchen

Zurück zur Übersicht

Diese Funktion durchsucht eine beliebige SQL Datenbank komplett nach einem Suchwort.

In meinem kleinem Auftragsverwaltungsprogramm ist es manchmal nötig die komplette Datenbank nach einem bestimmten Wort zu durchsuchen (Name, Strasse, Auftragsnummer etc.) Bei mehr als 20 Spalten natürlich immer etwas umständlich eine SQL Abfrage zu formulieren.
Die kleine Funktion erledigt das jetzt für mich:

 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
<?php
require_once "mysql_connect.php";      //Include um Verbindung zu DB aufzubauen, sollte klar sein
                                    //die Funktion für eine SQL Abfrage heisst hier do_query()
                                    
$table "tabelle";                //hier muss natürlich der Tabellenname angegeben werden



function alt_f ($table,$searchstring) {
    
$cols do_query("SHOW COLUMNS FROM $table");      //gibt die Spaltennamen aus
    
if (!$cols) {
        die (
'Abfrage konnte nicht ausgeführt werden: ' mysql_error());
    }
    
    
$string "";                                        //nen paar Variablen initialisieren
    
$i 0;
    if (
mysql_num_rows($cols) > 0) {                    // die einzelnen Spaltennamen durchlaufen
        
while ($row mysql_fetch_assoc($cols)) {          //gibt den Spaltennamen aus
            
$i++;                                        //mitzählen
               
$string .= "`".$row[Field]."` LIKE '%$searchstring%'" ;        //fügt die Anweisung für die SQL Abfrage zusammen
               
if ($i mysql_num_rows($cols)) $string .= " OR ";            //damit am Ende kein weiteres OR steht wird das letzte
        
}                                                                //nicht angefügt
    
}
    
    
$result do_query(" SELECT * FROM `$table` WHERE $string ");        //stellt die SQL Anfrage mit dem eben gebastelten Suchstring
    
if (mysql_num_rows($result) > 0) {
        while(
$row mysql_fetch_assoc($result)) {                        //Array aus Ergebnissen bilden
            
$data[] = $row;
        }
        return (
$data);                                                    //Array zurückgeben
    
}
    else return(
false);                                                    //bzw. ein False wenn die Suche erfolglos war
}


if (
$searchstring=$_POST[searchstring]) {                                //ab hier nur Script zum ausprobieren der Funktion
    
if ($result=alt_f($table,$searchstring)) {
        echo 
"Die Suche ergab ".count($result)." Ergebnisse<br>";
        foreach (
$result as $value) {
            
print_r($value); echo "<br>";
        }
    }
    else echo 
"Keine Ergebnisse";
}
else {
    echo 
'<form action="alt_f.php" Method="post"><br>
    Suchwort: <input type="text" Name="searchstring"><br>
    <input type="submit"></form>'
;
}
?>


Diese Funktion gibt jetzt aber gleich das Suchergebnis als Array zurück, wenn man aber nur den entsprechenden Suchstring gebastelt haben möchte, kann man das mit einigen kleinen Änderungen:
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

<?php
    
function alt_f ($table,$searchstring) {
        
$cols do_query("SHOW COLUMNS FROM $table");      //gibt die Spaltennamen aus
        
if (!$cols) {
            die (
'Abfrage konnte nicht ausgeführt werden: ' mysql_error());
        }
        
        
$string "";                                        //nen paar Variablen initialisieren
        
$i 0;
        if (
mysql_num_rows($cols) > 0) {                    // die einzelnen Spaltennamen durchlaufen
            
while ($row mysql_fetch_assoc($cols)) {          //gibt den Spaltennamen aus
                
$i++;                                        //mitzählen
                   
$string .= "`".$row[Field]."` LIKE '%$searchstring%'" ;        //fügt die Anweisung für die SQL Abfrage zusammen
                   
if ($i mysql_num_rows($cols)) $string .= " OR ";            //damit am Ende kein weiteres OR steht wird das letzte
            
}                                                                //nicht angefügt
        
}
        return(
$string);  //gibt den Suchstring zurück
    
}
?>


Die Abfrage müsste dann aber noch komplettiert werden und kann dann noch entsprechend angepasst werden:
 PHP 
1:
2:
3:
4:
<?php
$suchstring 
alt_f($table,$meinesuche);
$q do_query (" SELECT * FROM `$table` WHERE "$suchstring" DESC LIMIT(1,1) ");
?>


Kommentare

Zurück zur Übersicht

Autor Crisma

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» Entwickler Forum

» insert nach login

» Tabellenzelle zu groß







© PHP-Einfach.de 2003 - 2012