Sönke Tesch: php4 / Hompegage in 5 Sprachen

Beitrag lesen

select wort,uk as übesetzung from monster_übersetzungen
»»
  while ($daten=mysql_fetch_assoc($ergebnis))
    $transe[$daten["wort"]]=$daten["übersetzung"];

$daten ist doch schon ein assoziatives Array in diesem Fall. Oder sehe ich das falsch? Könnte ich dann nicht einfach das Array $daten auf meiner Seite verwenden?

echo "He was eating an ".$daten['apfel'];

Nein, mysql_fetch_*() liefert immer nur _eine_ Zeile aus dem select-Ergebnis, und zwar (bei mysql_fetch_assoc bzw. _array) mit den Spaltennamen (!) als Indizes. Du bekommst in der Schleife oben also nacheinander:

1. Durchlauf: $daten["wort"]="apfel"; $daten["übersetzung"]="apple";
  2. Durchlauf: $daten["wort"]="banane"; $daten["übersetzung"]="banana";
  usw.

Um wie von Dir gewünscht den deutschen Namen als Index im Feld zu bekommen, muß das $transe-Feld her:

$transe[$daten["wort"]]=$daten["übersetzung"];

Aus dem Eintrag in $daten["wort"] wird also der Index, der dazu gehörende Wert kommt aus $daten["übersetzung"]. Nach der ersten $daten-Beispielzeile sieht es dann so aus:

$transe["apfel"]       ="apple";

Gruß,
  soenk.e