Ankündigung

Einklappen
Keine Ankündigung bisher.

php code aus mysql auslesen und variablen aus string als variablen ausgeben.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • php code aus mysql auslesen und variablen aus string als variablen ausgeben.

    Hallo Jungs und Mädels,

    Wer kann helfen? Ich habe folgende mysql tabelle
    Code:
    /*tabelle wurde ohne Änderung aus phpMyAdmin exportiert.*/
    INSERT INTO `text_emails` (`id`, `von`, `betreff_de`, `betreff_fr`, `betreff_it`, `betreff_en`, `inhalt_de`, `inhalt_fr`, `inhalt_it`, `inhalt_en`)
    VALUES (1, 'admin', 'Registrierung bei ".$Domain."', '', '', '', 'Registrierung bei ".$domain.".\r\n\r\nBevor du dich einloggen kannst, musst du auf folgender Seite die Registrierung bestätigen: ".$link."\r\n\r\nBeste Grüsse\r\n".$domain."', '', '', '');
    weiter gehts mit php;
    PHP-Code:
    //variable $Domain setzen.
    $Domain "irgendwas";

    //nach der mysqli selectierung habe ich folgendes:
    $betreff_de $row["betreff_de"];

    //so wird der string ausgegeben.
    echo $betreff_de//Registrierung bei ".$Domain."

    //ich möchte aber das haben
    echo $betreff_de//Registrierung bei irgendwas 
    Also ich möchte die php variablen aus dem string als variabler inhalt darstellen. Wie macht man das?

    Vielen Dank für eure Hilfe.

    Gruss
    Santana

  • #2
    Warum hast du überhaupt PHP-Code in der DB? Da nimmt man doch eher "normale" Platzhalter. Von %s (a la printf() ) bis über {domain} etc.. etc..
    eval() würde gehen, aber das ist halt sehr gefährlich und kann dir eine riesen Lücke ins System reissen.

    Siehe auch Template-Engines zB Twig, etc.. Die erledigen auch gleich Escaping für dich.

    Kommentar


    • #3
      Es muss nicht zwingend meine meine Methode angewendet werden, indem ich php code in der db schreibe. Ich kenne nur keine Möglichkeit, wie man das lösen könnte.

      Normale Platzhalter? Das hört sich interessant an. Wonach muss ich suchen, wenn ich mich dokumentieren will?

      Meinst du mit normale Platzhalter vielleicht das? Nachdem ich meine variablen in der DB umbenenne von $domain nach zb. *domain und dann mit...
      PHP-Code:
      $betreff_de str_replace("*domain"$domain$betreff_de); 
      ...das Wort ersätze?

      Kommentar


      • #4
        Platzhalter für Templates (Vorlagen) bestehen aus Bezeichnern mit speziellen Begrenzern, die im aktuellen Kontext so nicht auftreten und dadurch eindeutig identifiziert werden können.
        *domain ist als Platzhalter nicht so gut geeignet, besser ist da schon der obige Vorschlag von hausl: {domain}. Der Wiki-Artikel Template-Engine gibt da einen ersten Überblick zum Thema.
        Dies mit str_replace zu realisieren, da liegst du für einfache Fälle gar nicht so falsch.

        Kommentar


        • #5
          Hier unten auf der Seite sind auch welche zum anschauen, wenn du willst: http://php-de.github.io/#tutorials-solutions

          Anmerkung:

          $betreff_de als Varname ist ja eigentlich auch nicht richtig.. Wenn du dann zB Sprachen noch mit verwendest, kann nicht dynamisch ausgelesen werden, an Hand der Sprachwahl. Da nimmt man dann eher Arrays, und hat dann Sprachen selbst üblicherweise dann zB in eigenen Dateien je Sprache oder in der DB, oder verwendet die gettext-Erweiterung etc. etc...

          Nur vom Prinzip her um es dir zu verdeutlichen (hier getippt) .. Funktioniert ohne Sprachen natürlich auch.. und/oder auch mit str_replace().. Wie gesagt da gibt es sehr viele Varianten.

          PHP-Code:
          // Textdefinitionen
          // ...
          $txt['de']['welcome'] = 'Willkommen auf %s!';
          $txt['en']['welcome'] = 'Welcome at %s!';


          // hier irgendwo Festlegung der Sprache mittels Userauswahl etc...
          $lng 'de';

          // ...

          // dein Code
          $domain 'example.com';

          printf($txt[$lng]['welcome'], $domain); // Willkommen auf example.com! 

          Kommentar

          Lädt...
          X