Ankündigung

Einklappen
Keine Ankündigung bisher.

$GLOBALS, welche in DB gespeichert ist, als Variabel ausgeben und nicht als String

Einklappen

Neue Werbung 2019

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

  • $GLOBALS, welche in DB gespeichert ist, als Variabel ausgeben und nicht als String

    Hallo miteinander

    Ich möchte eine $GLOBALS in einer Datenbank speichern. Nicht den Wert der global, sonder die ganze Variable an sich, z.B. so: $GLOBALS['global']. Das geht auch wunderbar. Wenn ich jetzt diese $GLOBALS aus der Datenbank per $this->nsGlobal hole, habe ich in der Variable $this->nsGlobal einen String, nämlich $GLOBALS['global'] => $this->nsGlobal = '$GLOBALS['global']'.

    Jetzt zu meiner Frage: Wie kann ich machen, dass es nicht den String nimmt, sondern den Wert in der $GLOBALS. Z.B. den Wert 1 => $this->nsGlobal = 1;

    Jetzt fragt ihr euch sicher, wieso ich das so mache, es ist ja schon global. Ich erstelle ein Modul, in der, der Benutzer eine GLOBAL und einen Wert eingeben kann. Schlussendlich wird geprüft, ob der Wert in der Global dem eingegebenen Wert gleich ist, also muss ich das so machen.

    Ist mein Vorhaben möglich?

  • #2
    Ich weiß überhaupt nicht, auf was du hinauswillst. Vermute mal, daß du evtl Objekte in der DB ablegen willst google => orm doctrine
    oder auch einfach als xml, wenn denn dem so sein sollte.

    mfg

    Kommentar


    • #3
      Nein ich möchte eine $GLOBALS in der Datenbank speichern, aber nicht den Wert, dieser $GLOBALS, sondern die $GLOBALS an sich. Das funktioniert auch. Wenn ich diese $GLOBALS aus der Datenbank heraushole, habe ich sie in einem String und nicht mehr in einer Variable, Beispiel: $this->nsGlobal = '$GLOBALS['global']'. Jetzt meine Frage, wie kann ich machen, dass es eine Variable wird und nicht mehr einen String bleibt, Beispiel: $this->nsGlobal = 3?

      Kommentar


      • #4
        Ehrlich, keine Ahnung, was Du da faselst. Nur weil Du den Satz wiederholst wird er nicht deutlicher.

        Kommentar


        • #5
          siehe PHP: Variable variables - Manual

          Kommentar


          • #6
            Zitat von nikosch Beitrag anzeigen
            Ehrlich, keine Ahnung, was Du da faselst. Nur weil Du den Satz wiederholst wird er nicht deutlicher.
            Dann lies ihn genau durch und studiere. Wenn du etwas nicht verstehst, bitte ich dich das mir mitzuteilen.

            @David: Danke für deine Antwort, aber das war es nicht. Konnte aber doch etwas lernen

            Kommentar


            • #7
              Zitat von beta02 Beitrag anzeigen
              @David: Danke für deine Antwort, aber das war es nicht. Konnte aber doch etwas lernen
              Dann musst Du das Problem noch mal beschreiben. Vielleicht (aber nicht nur) mit Beispiel.

              Kommentar


              • #8
                1. In der Datenbank ist folgender Wert gespeichert: $GLOBALS['global']
                2. Ich hole es aus der Datenbank und bekomme den Wert/ String '$GLOBALS['global']'
                3. Da $GLOBALS['global'] an sich eine Variable ist, möchte ich ihn als Variable und nicht als String (siehe Punkt 2)
                4. Ich möchte den gespeicherten Wert, welcher in der $GLOBALS['global'] ist, bekommen

                Ist das möglich? Welchen Punkt versteht ihr nicht?

                Kommentar


                • #9
                  Wenn es immer GLOBALS[xyz] ist:
                  PHP-Code:
                  $GLOBALS['global'] = 'foo';

                  $x 'global';
                  echo 
                  ' Name: '$x;
                  echo 
                  ' Wert: '$GLOBALS[$x]; 

                  Kommentar


                  • #10
                    Danke David, aber das wars auch nicht! Vielleicht habe ich es wirklich undeutlich geschrieben.

                    Ich habe es jetzt so gelöst:
                    PHP-Code:
                            $open = fopen(TL_ROOT . '/system/modules/mod_next_step/php/global.php', 'w+');
                            $write = fwrite($open, '<?php
                    $global 
                    ' . $this->nsGlobal . ';
                    ?>');
                            //
                            $close = fclose($open);

                            require(TL_ROOT . '/system/modules/mod_next_step/php/global.php');
                    Indem ich den Wert von der Datenbank in ein externes File geschrieben habe und so die $GLOBALS aufrufe.

                    Kommentar


                    • #11
                      Also wenn es schon so ein Uns..uns allen liebes Vorgehen sein muss, dann lass doch wenigstens das Dateisystem in Ruhe und benutze [man]eval[/man]()

                      Kommentar


                      • #12
                        David du bist der Beste! Das ist genau das was ich gesucht habe! Es gibt nur ein Problem. Es gibt mir beim Code: $global = eval("$this->nsGlobal = '$this->nsGlobal';"); bzw. $global = eval("$this->nsGlobal = \"$this->nsGlobal\";");

                        folgende Warnung:
                        Parse error: syntax error, unexpected T_STRING in /home/httpd/vhosts/xxx/httpdocs/test/system/modules/mod_next_step/ModuleNextStep.php(55) : eval()'d code on line 1

                        Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/xxx/httpdocs/test/system/modules/mod_next_step/ModuleNextStep.php(55) : eval()'d code:1) in /home/httpd/vhosts/xxx/httpdocs/test/system/libraries/Template.php on line 174

                        bzw.

                        Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/httpd/vhosts/xxx/httpdocs/test/system/modules/mod_next_step/ModuleNextStep.php(55) : eval()'d code on line 1

                        Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/xxx/httpdocs/test/system/modules/mod_next_step/ModuleNextStep.php(55) : eval()'d code:1) in /home/httpd/vhosts/xxx/httpdocs/test/system/libraries/Template.php on line 174

                        Ist das Normal? Kann ich diese umgehen?

                        Kommentar


                        • #13
                          eval("$this->nsGlobal = '$this->nsGlobal';");
                          Was soll das denn bitte produzieren?!

                          Kommentar


                          • #14
                            Das gleiche wie:
                            eval("$this->nsGlobal = \"$this->nsGlobal\";");

                            Kommentar


                            • #15
                              Sicher nicht. Und selbst wenn - welchen Sinn sollte es haben, $a=$a; auszuführen?!

                              Kommentar

                              Lädt...
                              X