Announcement

Collapse
No announcement yet.

(php) In Select-Abfrage Spaltenname mit Variable verknüpfen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • (php) In Select-Abfrage Spaltenname mit Variable verknüpfen

    Hallo Leute!

    ich habe eine Tabelle (texttab), in der ein Wort oder ein Text in verschiedener Sprache abgelegt ist:

    text_id
    text_de
    text_en

    wenn ich nun eine Select-Abfrage der Tabelle (php-datei) machen möchte, würde ich gerne die Variable $lang an den spaltenname dranhängen. Habs so probiert, aber so mag es offensichtlich nicht:

    $qry="SELECT text_id, text_".$lang." FROM texttab";

    Kennt ihr einen Weg oder muss ich eine If-Abfrage machen (if lang=de dann die Select-Abfrage "A" else Select-Abfrage "B")?

    Vielen Dank für eure konstruktive Hilfe
    Klaus

  • #2
    Habs so probiert, aber so mag es offensichtlich nicht:

    $qry="SELECT text_id, text_".$lang." FROM texttab";
    Doch, so mag es: an MySQL kommt lediglich ein simpler String von PHP (welcher ein Statement beinhaltet) an.

    Ist also kein SQL-Problem, sondern ein Problem mit mangelnden PHP Debugging.
    Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

    Comment


    • #3
      Hallo,

      wie dibo33 bereits geschrieben hat, ist das so in Ordnung.
      Falls es möglich ist solltest Du aber wegen der Flexibilität der Sprachen in der DB das DB-Design anders gestalten.

      z.B.:
      Tabelle: "sprachen"
      Spalten: "id", "bezeichnung"
      Beispiel: 1, DE
      2, EN

      Tabelle: "texttab"
      Spalten: "id", "sprache_id", "text"
      Beispiel: 1, 1, Spiel
      2, 2, Game
      3, 1, Ausgabe
      4, 2, Output

      Der Vorteil der Methode liegt auf der Hand. Zum Einfügen muss eine neue Sprache eingefügt und die Texte für diese Sprache gepflegt werden. Außerdem kann man die Sprach-ID in einer Sessionvariablen führen und die Texte mit einer standardisierten SQL-Abfrage selektieren.

      SQL-Anfrage:
      $sprache = "DE";
      $sprache_id = "SELECT id FROM sprache where bezeichnung = ".$sprache;
      ...
      $qry="SELECT id, text FROM texttab where sprache_id = ".$sprache_id;

      oder

      $sprache = "DE";
      $qry="SELECT t.id, t.text FROM texttab as t join sprache as s on (t.sprache_id = s.id) where s.bezeichnung = ".$sprache;

      Comment

      Working...
      X