Anzahl der Übereinstimmungen einer Suchabfrage ausgeben
Maximilian
- datenbank
0 Tom
Hallo zusammen!
Ich schreibe gerade in PHP und MySQL eine Seite, auf der man Rezepte eintragen und dann nach Eingabe von Zutaten in eine Suchmaske wieder abrufen können soll.
Meine Datenbank (relational aufgebaut) besteht aus zwei Tabellen:
+----+---------+
| ID | name |
+----+---------+
| 7 |Wurstbrot|
+----+---------+
| 8 |Butterbrot|
+----+---------+
+---------+----------+
|rezept_ID| zutat |
+---------+----------+
| 7 | Wurst |
+---------+----------+
| 7 | Brot |
+---------+----------+
| 8 | Butter |
+---------+----------+
| 8 | Brot |
+---------+----------+
Trägt jemand zum Beispiel das Rezept "Wurstbrot" ein, wird in die erste Tabelle (Rezepte) über auto-increment eine ID sowie der Name des Rezepts geschrieben.
In die zweite Tabelle werden die Zutaten geschrieben und außerdem die ID des Rezepts (als "rezept_ID" gespeichert), damit man die Zutaten den dazugehörigen Rezepten zuordnen kann.
Meine Suchabfrage (mit Subselect) sieht momentan so aus:
$abfrage = "SELECT name FROM rezepte
WHERE (ID) = ANY (SELECT rezept_ID FROM zutaten
WHERE MATCH (zutat)
AGAINST (' ".mysql_real_escape_string($_POST['zutat1'])."*
".mysql_real_escape_string($_POST['zutat2'])."* ' IN BOOLEAN MODE)
)";
Und die Ausgabe so:
$resultat = mysql_query($abfrage) or die (mysql_error());
echo " <table> ";
while ($row = mysql_fetch_array($resultat))
{
extract ($row);
echo " <tr>
<td> $name </td>
</tr> ";
}
echo " </table> ";
Das funktioniert auch soweit. Sucht man beispielsweise nach der Zutat Wurst, erhält man als Ergebnis das Rezept Wurstbrot. Sucht man nach Wurst und Brot, spuckt die Suche Wurstbrot und Butterbrot aus, da in beiden Rezepten Brot enthalten ist.
Ich suche jetzt nach einer Möglichkeit, die Anzahl der Übereinstimmungen der gesuchten Zutaten mit dem jeweiligen Rezept auszugeben. (Bei der Suche nach Wurst und Brot, würde das Rezept Wurstbrot also 2 Übereinstimmungen liefern, Butterbrot nur eine.)
Hat jemand eine Idee?
Hello,
+----+---------+
| ID | name |
+----+---------+
| 7 |Wurstbrot|
+----+---------+
| 8 |Butterbrot|
+----+---------+
da fehlt eine M:N Auflösung
ID_REZEPT ID_ZUTAT
7 1
7 2
7 3
8 2
8 3
+---------+----------+
|ID | zutat |
+---------+----------+
| 1 | Wurst |
+---------+----------+
| 2 | Brot |
+---------+----------+
| 3 | Butter |
+---------+----------+
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
da fehlt eine M:N Auflösung
ID_REZEPT ID_ZUTAT
7 1
7 2
7 3
8 2
8 3
Jede Zutat hat eine eigene ID (auto-increment). Habe die Spalte nur aus Gründen der Übersichtlichkeit weggelassen.
Danke trotzdem und Gruß auf den Berg!