Danke für die Antwort erstmal!
Ich habe jetzt mal einen FULLTEXT-Index angelegt und den Feldern den Typ "Text" statt "Tinytext" zugewiesen. Allerdings bekomme ich trotzdem die Fehlermeldung "Can't find FULLTEXT index matching the column list".
Mein PHP-Quelltext sieht folgendermaßen aus:
<?php
error_reporting(E_ALL); // alle Fehler anzeigen
@mysql_connect('localhost:8889', 'root', 'root') or die ("Keine Verbindung moeglich");
mysql_select_db("test") or die ("Die Datenbank existiert nicht");
$name = $_POST["name"];
$zutat1 = $_POST["zutat1"];
$zutat2 = $_POST["zutat2"];
$zutat3 = $_POST["zutat3"];
$zutat4 = $_POST["zutat4"];
$zutat5 = $_POST["zutat5"];
$zutat6 = $_POST["zutat6"];
$zutat7 = $_POST["zutat7"];
$zutat8 = $_POST["zutat8"];
$zutat9 = $_POST["zutat9"];
$zutat10 = $_POST["zutat10"];
$text = $_POST["text"];
$zeit = $_POST["zeit"];
$abfrage = "SELECT * FROM rezepte
WHERE MATCH (zutat1,zutat2,zutat3,zutat4,zutat5,zutat6,zutat7,zutat8,zutat9,zutat10)
AGAINST ('$zutat1*, $zutat2*, $zutat3*, $zutat4*, $zutat5*, $zutat6*, $zutat7*, $zutat8*, $zutat9*, $zutat10*')";
$resultat = mysql_query($abfrage) or die (mysql_error()); // -- FEHLERMELDUNG!! --
echo "<font size=1><br />";
echo "<table border=none bgcolor=#d3d3d3>";
while ($row = mysql_fetch_array($resultat)) // Sämtliche Datensätze durchlaufen und ausgeben
{
extract ($row); // Mithilfe der Feldbezeichnungen auf Feldinhalte zugreifen und diese ausgeben
echo "<tr>
<td width=250 height=30><a href=#><b>$name</b></a></td>
<td width=100 height=30>$zutat1</td>
<td width=100 height=30>$zutat2</td>
<td width=100 height=30>$zutat3</td>
<td width=100 height=30>$zutat4</td>
<td width=100 height=30>$zutat5</td>
<td width=100 height=30>$zutat6</td>
<td width=100 height=30>$zutat7</td>
<td width=100 height=30>$zutat8</td>
<td width=100 height=30>$zutat9</td>
<td width=100 height=30>$zutat10</td>
<td width=250 height=30>$text</td>
<td width=50 height=30>$zeit</td>
</tr>";
}
echo "</table>";
echo "</font>";
?>
Das mySQL-CREATE TABLE sieht so aus:
CREATE TABLE rezepte
(
ID
int(11) NOT NULL auto_increment,
name
text character set utf8 NOT NULL,
zutat1
text character set utf8 NOT NULL,
zutat2
text character set utf8 NOT NULL,
zutat3
text character set utf8 NOT NULL,
zutat4
text character set utf8 NOT NULL,
zutat5
text character set utf8 NOT NULL,
zutat6
text character set utf8 NOT NULL,
zutat7
text character set utf8 NOT NULL,
zutat8
text character set utf8 NOT NULL,
zutat9
text character set utf8 NOT NULL,
zutat10
text character set utf8 NOT NULL,
text
text character set utf8 NOT NULL,
zeit
smallint(11) unsigned NOT NULL,
PRIMARY KEY (ID
),
FULLTEXT KEY zutaten
(name
,zutat1
,zutat2
,zutat3
,zutat4
,zutat5
,zutat6
,zutat7
,zutat8
,zutat9
,zutat10
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
]
oder so in phpMyAdmin:
Was machst Du denn mit Rezepten, die mehr als zehn Zutaten haben? Bei weniger »» Zutaten schleppst Du viel leere Felder mit.
Ich hatte eigentlich vor später noch mehr Felder hinzuzufügen und dachte, dass sich leere Felder nicht auf die Performance der Suche auswirken. Dein Vorschlag wäre, alle Zutaten eines Rezeptes in ein Tabellenfeld zu speichern?
Nochmals danke für jede Hilfe!