Hallo,
ich habe wieder eine Frage zu PHP,
ich habe eine Datenbank die mehrere Spalten besitzt, hier ein Beispiel für einen Eintrag:
[TABLE="class: grid, width: 500, align: left"]
[TR]
[TD]id[/TD]
[TD]postleitzahl[/TD]
[TD]name[/TD]
[TD]geschmack[/TD]
[TD]gemuse[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]73492[/TD]
[TD]peter[/TD]
[TD]apfel, banane, zitrone minze, orange[/TD]
[TD]ja[/TD]
[/TR]
[/TABLE]
id = selbsterklärend, fortlaufende nummerierung
plz = selbsterklärend
name = selbsterklärend
geschmack = hier können mehrere Werte bei einem Eintrag ausgewählt werden, diese werden mit ", " voneinander getrennt. Ein Wert kann aber auch "zitrone minze" sein (alle möglichen Werte sind in einer anderen Datenbank gespeichert)
gemuse = kann entweder "ja", "nein" oder "keine Angabe" sein.
Nun möchte ich hierfür gern ein php-Suchskript mit Mehrfachauswahl schreiben.
Hierfür kann ich nach der plz mit z.B. "73*" suchen, bei Geschmack kann ich "zitrone minze" sowie "orange" oder auch mehr angeben und bei gemuse einer der drei Werte. Hierfür sucht mein Skript in der Datenbank jeden Datensatz nach den entsprechenden Kriterien ab und spuckt die Ergebnisse aus.
Bisher habe ich leider keine gute Lösung gefunden wie ich zuerst einmal das ganze mit der Mehrfachauswahl in html umsetze. In php bin ich mittlerweile so weit, dass ich plz, geschmack und gemuse (jeweils nur einzelangaben) suchen kann und entsprechend etwas gefunden wird. Jedoch funktioniert das Skript nicht immer und unter Safari und Chrome überhaupt nicht :?:
Das ist mein Code bisher:
Danach erfolgt eine standardmäßige Ausgabe - Kann mir jemand helfen wie ich das mit der Mehrfachauswahl realisieren kann und vorallem warum mein Code manchmal nicht funktioniert und ob dieser so überhaupt okay ist?
Vielen Dank!
Gruß,
kRuzeFiX
ich habe wieder eine Frage zu PHP,
ich habe eine Datenbank die mehrere Spalten besitzt, hier ein Beispiel für einen Eintrag:
[TABLE="class: grid, width: 500, align: left"]
[TR]
[TD]id[/TD]
[TD]postleitzahl[/TD]
[TD]name[/TD]
[TD]geschmack[/TD]
[TD]gemuse[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]73492[/TD]
[TD]peter[/TD]
[TD]apfel, banane, zitrone minze, orange[/TD]
[TD]ja[/TD]
[/TR]
[/TABLE]
id = selbsterklärend, fortlaufende nummerierung
plz = selbsterklärend
name = selbsterklärend
geschmack = hier können mehrere Werte bei einem Eintrag ausgewählt werden, diese werden mit ", " voneinander getrennt. Ein Wert kann aber auch "zitrone minze" sein (alle möglichen Werte sind in einer anderen Datenbank gespeichert)
gemuse = kann entweder "ja", "nein" oder "keine Angabe" sein.
Nun möchte ich hierfür gern ein php-Suchskript mit Mehrfachauswahl schreiben.
Hierfür kann ich nach der plz mit z.B. "73*" suchen, bei Geschmack kann ich "zitrone minze" sowie "orange" oder auch mehr angeben und bei gemuse einer der drei Werte. Hierfür sucht mein Skript in der Datenbank jeden Datensatz nach den entsprechenden Kriterien ab und spuckt die Ergebnisse aus.
Bisher habe ich leider keine gute Lösung gefunden wie ich zuerst einmal das ganze mit der Mehrfachauswahl in html umsetze. In php bin ich mittlerweile so weit, dass ich plz, geschmack und gemuse (jeweils nur einzelangaben) suchen kann und entsprechend etwas gefunden wird. Jedoch funktioniert das Skript nicht immer und unter Safari und Chrome überhaupt nicht :?:
Das ist mein Code bisher:
PHP:
<?php
$tbl_name="verzeichnis"; // Table name
if(isset($_POST['search'])){
$plz = mysql_real_escape_string($_POST['plz']);
$geschmack = mysql_real_escape_string($_POST['geschmack']);
$gemuse = mysql_real_escape_string($_POST['gemuse']);
$searcharray = array();
if($plz != '12345') { //12345 ist der Standardwert der bei plz in der Abfrage steht
$sql = "SELECT `id`,`plz` FROM `verzeichnis` WHERE MATCH (`plz`) AGAINST ('".$plz."' IN BOOLEAN MODE)";
$result = mysql_query($sql) or die(mysql_error()); // Abfrage ausführen
while($row = mysql_fetch_object($result)) { // Für jeden Datensatz...
array_push($searcharray, $row->id); // schreibe seine id in das Array
}
$gefunden = implode(" OR `id` = ", $searcharray); // Array in String umformen
}
if($geschmack != '-') { // Wenn kein Suchwert ausgewählt wurde wird "-" als Wert übertragen
$searcharray = array();
if($gefunden != null) {
$sql = "SELECT `id`,`geschmack` FROM `verzeichnis` WHERE `id` = ".$gefunden."";
} else {
$sql = "SELECT `id`,`geschmack` FROM `verzeichnis`";
}
$result = mysql_query($sql) or die(mysql_error()); // Abfrage ausführen
while($row = mysql_fetch_object($result)) { // Für jeden Datensatz...
if(strpos($row->geschmack, $geschmack) !== false) { // ... prüfe, ob der String $geschmack vorkommt...
array_push($searcharray, $row->id); // ... und wenn ja, schreibe seine id in das Array
}
}
unset($gefunden);
$gefunden = implode(" OR `id` = ", $searcharray); // Array in String umformen
}
if($gemuse != '-') {
$searcharray = array();
if($gefunden != null) {
$sql = "SELECT `id`,`gemuse` FROM `verzeichnis` WHERE `id` = ".$gefunden."";
} else {
$sql = "SELECT `id`,`gemuse` FROM `verzeichnis`";
}
$result = mysql_query($sql) or die(mysql_error()); // Abfrage ausführen
while($row = mysql_fetch_object($result)) { // Für jeden Datensatz...
if(strpos($row->gemuse, $gemuse) !== false) { // ... prüfe, ob der String $gemuse vorkommt...
array_push($searcharray, $row->id); // ... und wenn ja, schreibe seine id in das Array
}
}
unset($gefunden);
$gefunden = implode(" OR `id` = ", $searcharray); // Array in String umformen
}
$abfrage = "SELECT * FROM `verzeichnis` WHERE `id` = ".$gefunden."";
$ergebnis = mysql_query($abfrage);
$zeilenanzahl = mysql_num_rows($ergebnis);
$zeilennummer = 0;
Danach erfolgt eine standardmäßige Ausgabe - Kann mir jemand helfen wie ich das mit der Mehrfachauswahl realisieren kann und vorallem warum mein Code manchmal nicht funktioniert und ob dieser so überhaupt okay ist?
Vielen Dank!
Gruß,
kRuzeFiX