@Lektor
Hm, muss man nicht bei sowas wie "wartung = '$wartung'" das "wartung" in Anführungszeichen setzen ?
Schau mal bei meinem php-code ganz oben, die Suchanfrage.
Da sind bestimmte Begriffe auch in so speziellen Anführungszeichen gesetzt, ich glaube die musst du hier auch nutzen.
So ganz ohne geht es glaube ich nicht, auch wenn der komplette Text schon in Anführungszeichen ist.
@Gabriel
Ja, mir bereitet die Sache auch Kopfschmerzen, zumal das ja eigentlich nicht so wahnsinnig schwierig sein sollte.
Ohne Suche hat die Ausgabe damals prima funktioniert.
Da hatte ich aber auch noch eine andere Version für die Ausgabe benutzt, die ich aus einem Tutorial abgeschaut hatte.
Der Code für die Ausgabe in dem Tutorial sieht so aus:
Damals funktionierte aber die Suche dann nicht und so habe ich Stück-für-Stück alles mal ausgetauscht, Suche wie Ausgabe.
Und mittlerweile geht halt von der Ausgabe nichts mehr, die Suche hingegen schon.
Mist ey.
Und das ist noch das leichtere Datenbankenproblem.
Ich habe nämlich schon eine neue Aufgabe, wo ich zwei Datenbanken miteinander vergleichen muss und bei gewissen Übereinstimmungen in einer der Tabellen bestimmte Felder automatisch ausgefüllt werden müssen.
Da schmilzt mir schon dir Birne beim drüber nachdenken ^^
[Edit]
Hm, ich habe die Ausgabe jetzt mal wieder gegen die alte Version ersetzt, die ich in diesem Post dargestellt habe.
Aber so wirklich geklappt hat es leider trotzdem nicht.
Nun hat mir php 782 Zeilen ausgegeben, obwohl ich nach NICHTS gesucht habe, also ich habe alle Felder leer gelassen.
Also sollte mir eigentlich die komplette Tabelle ausgegeben werden, die aber 811 Zeilen lang ist.. das schlimmste ist aber:
alle Zeilen sind leer -.-
[Edit2]
So. Ich jetzt mal fetch_row durch fetch_array ausgetauscht, so wie es auch in dem Beispiel aus dem Tutorial ist.
Nun wird mir die komplette Tabelle wieder ausgegeben, wenn ich eine OR Suche mache und gar nichts, wenn ich eine AND Suche durchführe.
Das liegt einfach daran, das mySQL in der Datenbank wirklich exakt so sucht, wie es dort steht.
Wenn ich also eine OR Suche mit nur einem Parameter durchführe, wird eine Zeile mit diesem Parameter gesucht UND andere Zeilen, auf die jede andere Bedingung zutrifft, die nämlich ist, das irgendein Feld leer ist, weil ich ja nur für ein einziges Feld einen Parameter übergeben habe.
Versteht ihr ?
Wenn ich z.B. eine OR Suche mit einer Port-Angabe durchführe... z.B. 20.
Dann wird nach einer Zeile gesucht, in der Port = 20 ist,
ODER eine Zeile in der "auf Port" = "" ist ODER eine Zeile in der Switch = "" ist usw... und so habe ich dann wieder je Zeile der Tabelle ausgegeben.
Ich müsste also praktisch leere Felder aus dem Suchstring rausziehen.. den Suchstring mit jeder Suche individuell und dynamisch kreieren.
Geht das irgendwie ?
Bei einer Or oder And Suche soll also nur nach Werten gesucht werden, die auch tatsächlich eingegeben wurden.
Ich stelle mir das so vor, das ich auf der Suchseite neben jedem Suchparameter eine Checkbox mache, die "nicht suchen" heißt, womit man dann ein Flag übergibt, das php sagt, das jene Parameter nicht in die Suche mit einbezogen werden sollen.
Aber wie packt man das in eine Funktion
Hm, muss man nicht bei sowas wie "wartung = '$wartung'" das "wartung" in Anführungszeichen setzen ?
Schau mal bei meinem php-code ganz oben, die Suchanfrage.
Da sind bestimmte Begriffe auch in so speziellen Anführungszeichen gesetzt, ich glaube die musst du hier auch nutzen.
So ganz ohne geht es glaube ich nicht, auch wenn der komplette Text schon in Anführungszeichen ist.
@Gabriel
Ja, mir bereitet die Sache auch Kopfschmerzen, zumal das ja eigentlich nicht so wahnsinnig schwierig sein sollte.
Ohne Suche hat die Ausgabe damals prima funktioniert.
Da hatte ich aber auch noch eine andere Version für die Ausgabe benutzt, die ich aus einem Tutorial abgeschaut hatte.
Der Code für die Ausgabe in dem Tutorial sieht so aus:
PHP:
<?php
while ($adr = mysql_fetch_array($adressen_query)){
?>
<tr>
<td><?=$adr['id']?></td>
<td><?=$adr['anrede']?></td>
<td><?=$adr['vorname']?></td>
<td><?=$adr['nachname']?></td>
<td><?=$adr['strasse']?></td>
<td><?=$adr['plz']?></td>
<td><?=$adr['wohnort']?></td>
<td><?=$adr['fon']?></td>
<td><?=$adr['fax']?></td>
<td><?=$adr['email']?></td>
</tr>
<?php
}
?>
Damals funktionierte aber die Suche dann nicht und so habe ich Stück-für-Stück alles mal ausgetauscht, Suche wie Ausgabe.
Und mittlerweile geht halt von der Ausgabe nichts mehr, die Suche hingegen schon.
Mist ey.
Und das ist noch das leichtere Datenbankenproblem.
Ich habe nämlich schon eine neue Aufgabe, wo ich zwei Datenbanken miteinander vergleichen muss und bei gewissen Übereinstimmungen in einer der Tabellen bestimmte Felder automatisch ausgefüllt werden müssen.
Da schmilzt mir schon dir Birne beim drüber nachdenken ^^
[Edit]
Hm, ich habe die Ausgabe jetzt mal wieder gegen die alte Version ersetzt, die ich in diesem Post dargestellt habe.
Aber so wirklich geklappt hat es leider trotzdem nicht.
Nun hat mir php 782 Zeilen ausgegeben, obwohl ich nach NICHTS gesucht habe, also ich habe alle Felder leer gelassen.
Also sollte mir eigentlich die komplette Tabelle ausgegeben werden, die aber 811 Zeilen lang ist.. das schlimmste ist aber:
alle Zeilen sind leer -.-
[Edit2]
So. Ich jetzt mal fetch_row durch fetch_array ausgetauscht, so wie es auch in dem Beispiel aus dem Tutorial ist.
Nun wird mir die komplette Tabelle wieder ausgegeben, wenn ich eine OR Suche mache und gar nichts, wenn ich eine AND Suche durchführe.
Das liegt einfach daran, das mySQL in der Datenbank wirklich exakt so sucht, wie es dort steht.
Wenn ich also eine OR Suche mit nur einem Parameter durchführe, wird eine Zeile mit diesem Parameter gesucht UND andere Zeilen, auf die jede andere Bedingung zutrifft, die nämlich ist, das irgendein Feld leer ist, weil ich ja nur für ein einziges Feld einen Parameter übergeben habe.
Versteht ihr ?
Wenn ich z.B. eine OR Suche mit einer Port-Angabe durchführe... z.B. 20.
Dann wird nach einer Zeile gesucht, in der Port = 20 ist,
ODER eine Zeile in der "auf Port" = "" ist ODER eine Zeile in der Switch = "" ist usw... und so habe ich dann wieder je Zeile der Tabelle ausgegeben.
Ich müsste also praktisch leere Felder aus dem Suchstring rausziehen.. den Suchstring mit jeder Suche individuell und dynamisch kreieren.
Geht das irgendwie ?
Bei einer Or oder And Suche soll also nur nach Werten gesucht werden, die auch tatsächlich eingegeben wurden.
Ich stelle mir das so vor, das ich auf der Suchseite neben jedem Suchparameter eine Checkbox mache, die "nicht suchen" heißt, womit man dann ein Flag übergibt, das php sagt, das jene Parameter nicht in die Suche mit einbezogen werden sollen.
Aber wie packt man das in eine Funktion
Zuletzt bearbeitet: