 |
 |
|
Datenbank NOF-PHP
Ergebnisse der Suche nach Datensätzen
|
 |
|
|
 |
 |
 |
|
Jetzt wollte ich noch eine gesonderte Anzeige auf meiner Ergebnis Seite falls kein Datensatz gefunden wird. Daher musste ich das Ergebnis der Suche in eine IF Bedingung legen, wie oben im Foto der Seiten - Ansicht zu sehen ist.
Die IF Bedingung lautet wie folgt und ist unten im Foto zu erkennen.
mitgliedsuchen.Name ist nicht leer Form.Name
das bedeutet, dass die Varibale Name der Gruppe mitgliedsuchen nicht leer (also beschrieben ist) im gefundenen Datenbank Feld Name ist.
|
 |
 |
|
Falls es jemanden interessiert, wie ich auf meiner Ergebnis Seite oben die Benutzer Eingabe der Felder von der Suchen Seite anzeige, hier noch eine kurze Erklärung.
Ich habe ein Textfeld für jedes Eingabe-Feld aufgezogen und dort in den Code-Editor (siehe Bild unten) folgenden PHP-Code eingetragen, der mit einer IF-Bedingung überprüft, ob überhaupt eine Eingabe stattgefunden hatte.
|
 |
 |
|
... jetzt wollt ich noch ausschließen, dass jemand bei der Eingabe auf der Suchen Seite vielleicht versehentlich ein oder mehrere Leerzeichen vor einer Eingabe schreibt und dann auf den gesamten String, inklusive Leerzeichen, in der Datenbank gesucht wird und natürlich dann nichts gefunden wird.
Also habe ich die POST Variablen noch mit dem Befehl TRIM versehen um diese Variablen umzusetzen und den gesamten Code ganz vorne auf meiner Ergebnis Seite kopiert. Achtet darauf, dass da keine Leerzeile vor dem Code ist.
> Auf das Layout klicken > Fenster Layout Eigenschaften > Button HTML > Beginn der Seite einfügen
|
 |
 |
 |
 |
|
<?php $_POST['Name']=trim($_POST['Name']); $_POST['Vorname']=trim($_POST['Vorname']); $_POST['Strasse']=trim($_POST['Strasse']); $_POST['Ort']=trim($_POST['Ort']); $_POST['Land']=trim($_POST['Land']); ?>
|
|
|
nach oben
|
|
|
|
|
|
 |
 |
|
Ergebnis auf mehreren Seiten anzeigen:
Solltet Ihr die Suchergebnisse auf eine bestimmte Anzahl pro Seite beschränken wollen, dann müsst Ihr anstelle der POST-Variablen SESSION-Variablen auf der Ergebnis-Seite gründen, warum habe ich bereits auf der Tutorial-Seite “Suchen” erklärt.
Daher fügt Ihr anstelle des Codes (oben) diesen Code hier im > Beginn der Seite ein, mit dem ich die POST-Variablen in SESSION-Variablen umwandele.
Dafür habe ich auch das “verdeckte Feld” “action” im Formular erstellt, um hier mit einer IF-Bedingung festzustellen, ob dieser Aufruf direkt vom Formular kommt oder nicht, denn nur dann sollen die SESSION-Variablen auch neu gegründet werden, sonst sollen sie erhalten bleiben.
|
 |
 |
|
<?php
// SESSION öffnen
session_start();
// SESSION-Variablen nur ändern, wenn der Aufruf dieser Seite // vom Suchen-Formular kommt, was durch das verdeckte Feld "action" // erkannt wird.
if (isset($_POST['action']) && ($_POST['action']=='send')) {
// mittels "trim" Befehl eventuelle Leerzeichen entfernen
$_POST['Name']=trim($_POST['Name']); $_POST['Vorname']=trim($_POST['Vorname']); $_POST['Strasse']=trim($_POST['Strasse']); $_POST['Ort']=trim($_POST['Ort']); $_POST['Land']=trim($_POST['Land']);
// Umsetzen der SESSION-Variablen // mit den Feldinhalten des Suchen-Formulars
$_SESSION['Name']=$_POST['Name']; $_SESSION['Vorname']=$_POST['Vorname']; $_SESSION['Strasse']=$_POST['Strasse']; $_SESSION['Ort']=$_POST['Ort']; $_SESSION['Land']=$_POST['Land']; } ?>
|
 |
 |
|
... nun brauchen wir natürlich, um auf die neuen SESSION-Variablen zurückgreifen zu können, eine neue Datensatzgruppe (hier “mitgliedsuchseite”), in der wir zunächst sämtliche SESSION-Variablen gründen.
Dazu fügen wir in diese neue Datensatzgruppe wieder die Felder unserer Datenbank ein und gründen bei “Benutzerdefinierte Variable ...” alle unsere SESSION-Variablen, wie im Bild unten zu erkennen.
Also für jeden, für die Suche relevanten, Feld-Namen eine SESSION-Variable, die ich dann für die Suche wieder mit einer “ODER” Bedingung verknüpft und hier auf “ist gleich” gesetzt habe, also der Eingabe Begriff im Feld meines Suchen-Formulars muss exakt gleich mit dem Datensatzfeld meiner Datenbank sein.
|
 |
 |
|
Suchen auf “enthält”:
bei meiner “Suchen-Option 3”, lasse ich in der Datenbank nach Eingaben aus dem Suchen-Formular suchen, die nur einen Teil des korrekten Namens finden, also z.B. könnte man beim Feld “Stadt” lediglich “lin” anstatt “Berlin” eingeben und alle Datensätze mit der Stadt “Berlin” würden dennoch gefunden.
Daher fügt Ihr dann (anstelle der anderen gezeigten Codes oben) diesen Code hier im > Beginn der Seite ein, mit dem ich die POST-Variablen in SESSION-Variablen umwandele. Lest bitte auch unten im Code meine Kommentare für ein besseres Verständnis.
|
 |
 |
|
<?php
// SESSION öffnen
session_start();
// SESSION-Variablen nur ändern, wenn der Aufruf dieser Seite // vom Suchen-Formular kommt, was durch das verdeckte Feld "action" // erkannt wird.
if (isset($_POST['action']) && ($_POST['action']=='send')) {
// mittels "trim" Befehl eventuelle Leerzeichen entfernen
$_POST['Name']=trim($_POST['Name']); $_POST['Vorname']=trim($_POST['Vorname']); $_POST['Strasse']=trim($_POST['Strasse']); $_POST['Ort']=trim($_POST['Ort']); $_POST['Land']=trim($_POST['Land']);
// SESSION Variablen gründen für Abfrage mit "enthält" ("LIKE") // damit diese einen Wert erhalten, den es nicht gibt, habe ich diese // "emptyemptyempty" genannt
$_SESSION['Name']='emptyemptyempty'; $_SESSION['Vorname']='emptyemptyempty'; $_SESSION['Strasse']='emptyemptyempty'; $_SESSION['Ort']='emptyemptyempty'; $_SESSION['Land']='emptyemptyempty';
// Umsetzen der SESSION-Variablen // mit den Feldinhalten des Suchen-Formulars
if(!empty($_POST['Name'])) $_SESSION['Name']=$_POST['Name']; if(!empty($_POST['Vorname'])) $_SESSION['Vorname']=$_POST['Vorname']; if(!empty($_POST['Strasse'])) $_SESSION['Strasse']=$_POST['Strasse']; if(!empty($_POST['Ort'])) $_SESSION['Ort']=$_POST['Ort']; if(!empty($_POST['Land'])) $_SESSION['Land']=$_POST['Land']; } ?>
|
 |
 |
|
... nun brauchen wir auch hier wieder eine neue Datensatzgruppe, um auf die SESSION-Variablen zurückgreifen zu können, in der wir zunächst sämtliche SESSION-Variablen gründen.
Dazu fügen wir in diese neue Datensatzgruppe wieder die Felder unserer Datenbank ein und gründen bei “Benutzerdefinierte Variable ...” alle unsere SESSION-Variablen (falls noch nicht geschehen).
Also für jeden, für die Suche relevanten, Feld-Namen eine SESSION-Variable, die ich dann für die Suche wieder mit einer “ODER” Bedingung verknüpft und hier im Gegensatz zu dem letzten Beispiel oben, “enthält” gesetzt habe, also der Eingabe Begriff im Feld meines Suchen-Formulars muss nicht exakt gleich mit dem Datensatzfeld meiner Datenbank sein, sondern es genügt wenn nur Teile des Begriffs im jeweiligen Datensatzfeld enthalten sind.
|
 |
|
|
 |
 |
 |
|
... zum Schluss müssen wir natürlich darauf achten, dass dann sämtliche Objekte, wie z.B. die “Iteratoren”, “Beschriftungen”, “IF-Bedingungen”, “Fotos” oder was auch immer dieser “Datensatzgruppe” zugeordnet sind und eben alle verwendeten Objekte auf diese Datensatzgruppe verweisen.
|
 |
 |
|
Zählen von Datensätzen:
Nun wollte ich noch auf verschieden Art und Weise die gefundenen Datensätze zählen. Ich habe hier drei verschiedene Zähler eingesetzt:
1.) eine Variable, die ich “$mzaehler” genannt habe, um sämtliche Datensätze zu zählen, die innerhalb des “Iterators” auf jeder Seite erscheinen (siehe die beiden folgenden Bilder unten).
|
 |
 |
|
2.) Eine neue Datensatzgruppe “Counter” gegründet, der ich lediglich über den “Experten Modus” den unten stehenden “count” (zähl) Befehl gegeben habe, um alle Datensätze meiner gesamten Datenbank zu zählen. Hier auf das Datenfeld “ID” in eine Variable, die ich “ANZAHL” genannt habe.
|
 |
 |
|
SELECT count(ID) as ANZAHL FROM Mitglieder
|
 |
 |
|
3.) Jeweils noch eine neue Datensatzgruppe gegründet für die beiden “Suchen-Ergebnisse”, die auf mehreren Seiten angezeigt werden sollen, für die Anzahl der gesamt gefundenen Ergebnisse auf allen angezeigten Seiten. Hier muss ich dann zunächst wieder die gleichen Such-Optionen, im Bild unten sind das “ODER” und “enthält”, angeben wie bei der Suche selbst, denn nur diese (gefundenen) Datensätze solle ja gezählt werden.
|
 |
 |
|
... nachdem ich die Suchen-Optionen (wie oben im Bild) eingestellt habe, wechsele ich in den “Experten-Modus” um diese SQL-Befehle mit meinem “Count-Befehl” zu verbinden (siehe Bild unten).
Zunächst steht dort am Beginn des Codes noch ...
|
 |
 |
|
SELECT FROM
|
 |
 |
|
... was ich dann mit meinem “Count-Befehl” ergänze, wobei der * für alle Datensätze steht. Hier also auf alle Datensätze in eine Variable, die ich “ANZAHLLIKE” genannt habe.
|
 |
 |
|
SELECT count(*) as ANZAHLLIKE FROM
|
 |
 |
|
Nun muss ich nur noch ein “Beschriftungs-Objekt” an der Stelle einsetzen, wo die Zahl der gefundenen Datensätze erscheinen soll und dort als Datenfeld die Variable, auf die ich gezählt habe, auswählen.
|
 |
 |
|
Viel Erfolg!
|
|
|