Martin Zuba: Variablen Zusammenstückeln

Beitrag lesen

Mahlzeit Martin Zuba,

$request = mysql_query("SELECT * FROM history WHERE jahr = {$currentyear} AND phase = {$currentphase}");
[...]
        <td class="moves"><?php echo nl2br($info->moves_germany);?></td>
        <td class="moves"><?php echo nl2br($info->retreats_germany);?></td>
        <td class="moves"><?php echo nl2br($info->adjustments_germany);?></td>

Ich schätze, Du hast kein PHP-Problem, sindern ein Datenbankproblem. Wie sieht Dein Tabellendesign aus? Welche Spalten welchen Typs haben Deine Tabellen? Hast Du Dich über Normalisierung informiert und die Erkenntnisse entsprechend umgesetzt?

Das mag sein - aber nicht mit dem Tabellendesign, das Du (wahrscheinlich) hast. So ist Deine Anwendung immer auf die Länder beschränkt, für die Du Spalten in Deiner Tabelle "history" vorgesehen hast. Für jedes neue Land musst Du Dein Tabellendesign ändern ... und das ist gemeinhin das deutlichste Anzeichen dafür, dass das Design Mist ist. :-)

Ich habe den Fehler inzwischen behoben, indem ich die "variablen Veriablen" richtig benannt habe. Du hast aber auf jeden Fall recht, dass das Design schlecht ist, vor allem weil ich für jedes neue Land die Struktur ändern muss. Der Wikipedia Link ist interessant, aber ich bin mir nicht sicher, wie ich meine Datenbank entsprechend verbessern kann. Ich könnte natürlich in eine Tabelle für jedes Land einen Eintrag machen, dann könnte ich so leicht neue Länder hinzufügen, dann müsste ich aber die Tabellenstruktur ändern, wenn ich ein neues Jahr+Phase einfüge.

Brauche ich hierfür dreidimenionale Datenbanken? Oder wie soll ich das Problem sonst lösen? Ich beschäftige mich erst ein paar Tage mit PHP und mysql deshalb wäre ich für Tipps dankbar.

Lg
Martin