Mailinglisten-Archive |
Hallo Liste, ich sitze momentan an einem Projekt. Es soll ein "Singlefinder" werden. Das heisst jemand kann sich in die Datenbank eintragen (Hobbys(36 Auswahlmöglichkeiten),Alter,gewünschtes Alter des Partners, Wohnort,...). Die abfrage klappt auch wunderbar, ausser das mit den Hobbys. Ich überprüfe am Anfang welche Hobbys gewählt wurden. Dann stecke ich diese in ein Array. Jetzt erstellt eine Funktion einen Query: --- Funktion START function createHobbyQuery($array) { $string = ""; $endArray = count($array); for ($i = 0;$i<=$endArray;$i++) { if ($i == 0) { $string .= " hobbyid.hobbynumber = '$array[$i]' OR "; } if ($i == $endArray) { $string .= "hobbyid.hobbynumber = '$array[$i]'"; return trim($string); } $string .= "hobbyid.hobbynumber = '$array[$i]' OR "; } } --- Funktion ENDE Wie Ihr seht ist das hier alles mit einer OR Verknüpfung realisiert. Den fertige "Zwischenquery" setzte ich jetzt in den Endquery. Jetzt das Problem: Wenn Mann1 ca. 10 Hobbys gewählt hat und Frau1 auch 10, aber Frau1 hat nur 1 mal das selbe Hobby wie Mann1, wird sie trotzdem (vorausgesetzt die anderen Daten stimmen auch überein) gefunden. Jetzt endlich die Frage: Wie kann ich so etwas präzisieren? Das z.B. mindestens 4 Hobbys übereinstimmen müssen oder so ähnlich? Oder gibt es vieleicht eine Funktion dafür? Freue mich über jeden Denkanstoß. --Alex Meyer
php::bar PHP Wiki - Listenarchive