echo $begrüßung;
Das funktioniert aber nicht, weil ich die Ländernamen aus Datenbank main anscheinend nicht in den Variablenname der Abfrage aus der Datenbank history einfügen kann.
"Funktioniert nicht" heißt in deinem Fall konkret was?
Statt $info->moves_{$land->name_en} notiert man das korrekterweise $info->{'moves_' . $land->name_en}.
$request = mysql_query("SELECT * FROM history WHERE jahr = {$currentyear} AND phase = {$currentphase}");
Du hast sichergestellt, dass $currentyear und $currentphase unter allen Umständen Zahlenwerte enthalten, beispielsweise mit einer Zwangskonvertierung mittels intval()?
Deinem Code fehlt außerdem das Auswerten von Fehlerzuständen, die durch den Rückgabewert der mysql_*-Funktionen bekanntgegeben werden.
Gibt es hier eine elegante Lösung?
Dein Tabellendesign ist ungünstig, du hast beim Abfragen ein Problem und du denkst nun, mit einer weiteren ungünstigen Geschichte namens variable Variablen dieses Problem lösen zu können. Elegant wäre es, das Tabellendesign zu ändern, so dass die Landesinformation beim Abfragen nicht in den Metadaten (Feldname) steckt sondern in den Daten, denn darauf kann man einfacher zugreifen als mit der Feldnamenzusammensetzmethode. Und wenn noch ein Land hinzukommt kann das einfach in den Daten ergänzt werden, ohne dass weitere Felder und Auswertungen hinzugenommen werden müssen.
echo "$verabschiedung $name";