Suchfunktion mit PHP+MSSQL

iBu

Grünschnabel
Tach allerseits,

bin neu hier. Ein tolles Forum und auch schon nützliche Informationen aus den Themen/Beiträgen aufgenommen. So nun zu meinem Anliegen.

Ich arbeite mich grad in bissel in PHP rein. Das Programmieren gehört nicht zu meinen stärken zähle :). Ich soll ein kleines Projekt mit PHP machen.

Habe auch die Suchfunktion benutzt, aber nichts passendes gefunden oder vielleicht übersehen.

Ich möchte gern ein Suchfunktion einbauen. Der Wert soll aus einem Textfeld/Textbox kommen. Eine Verbindung zum MSSQL steht bereits und ebenfalls die Abfrage. Ich nutze XAMPP. Ich kann auch die Ergebnisse der Abfrage ausgeben. Nur möchte ich jetzt den Wert für die Abfrage aus dem Textfeld/Textbox nehmen.. Wie kann man den Wert aus dem Textfeld für die Abfrage verwenden bzw. übergeben.

Zum Schluss noch, was für Seiten/Bücher könnt Ihr mir empfehlen. Ich will gerne mit PHP+SQL weiterarbeiten bzw. mein Wissen vertiefen.

Gruß iBu
 
Ein Formular beinhaltet einen Head in dem du festlegst an welche url die daten gesendet werden sollen und mit welcher methode:
Code:
<form method="POST" action="datei.php">
<textarea name="suche"></textarea>
<input type="submit" />
</form>

In diesem Beispiel werden die Daten via POST versand an datei.php

in der Datei: datei.php kannst du die Werte via
$_POST["suche"] da textarea name="suche" abgreifen und für dein sql-query verwenden....
 
Danke, das hat soweit funktioniert. Ich habe noch eine Frage.

PHP:
$Vorname = "%".$_POST['Vorname']."%";  
$Nachname = "%".$_POST['Nachname']."%";

$query = "Select * From project_php Where Vorname Like '$Vorname' OR Nachname Like '$Nachname'"; 
$result = mssql_query("$query");

Ich würde jetzt die Suche verfeinern in Form von Platzhaltern. Aktuell sind 4 Datensätze in der Tabelle. Bsp. Vorname = t und Nachname = leer, dann zeigt er mir alle Datensätze an, obwohl nur 3 Vornamen ein t enthalten. Wenn wiederrum beide Textfelder ausgefüllt sind, erhalte ich die entsprechenden Ergebnisse zurück.

Ich möchte 3 kleine Suchfunktionen einbauen.
  • alles anzeigen = leere Textfelder
  • direkt = bsp. Vorname 'Peter'
  • Platzhalter = alle die ein t enthalten
Alle 3 sind ja einzelnd kein Problem.
 
Ich würde nur nach beiden Feldern suchen, wenn auch beide ausgefüllt worden sind.
Wieso denn die Datenbank mit "leeren" Werten belasten, wenn das nicht nötig ist.
Wenn also Vorname ausgefüllt wurde und Nachname nicht, durchsuche einfach nur nach Vorname.
 
Du darfst das jeweilie WHERE-Kriterium nur anwenden, wenn der entsprechende Parameter nicht leer ist - solltest also die SQL-Query dynamisch zusammenbauen. Da der leere String ja in jedem String enthalten ist, ruiniert Dir ein leerer String für Nach- oder Vorname die Abfrage. Hm, ist das verständlich? ;)
 
@matdacat

Auf den ersten Blick ist es verständlich. Hast du noch vielleicht eine gute Seite, die dieses (mit Beispielen) SQL-Query dynamisch weiter ausführlich erkärt?
 
Ist nicht kompliziert. Gaaanz quick and dirty könnte das ca. so aussehen:

PHP:
$query = "Select * From project_php";

// wenn beide nicht leer sind, dranhängen
if (!empty($_POST['Vorname']) && !empty($_POST['Nachname'])) {
    $Vorname = "%".$_POST['Vorname']."%";  
    $Nachname = "%".$_POST['Nachname']."%";
    $query .= "Where Vorname Like '$Vorname' OR Nachname Like '$Nachname'"; 
} else {
    // ansonsten vielleicht nur den Vornamen
    if (!empty($_POST['Vorname'])) {
        $Vorname = "%".$_POST['Vorname']."%";  
        $query .= "Where Vorname Like '$Vorname';
    }

    // oder nur den Nachnamen?
    if (!empty($_POST['Nachname'])) {
        $Nachname = "%".$_POST['Nachname']."%";  
        $query .= "Where Nachname Like '$Nachname';
    }

}

...
 
Zurück