php-Variable in String mitgeben...



  • hallo zusammen!!

    Ich würde gerne folgendes machen
    name="peter";name="peter"; sql = "update table set name='$name' where.....";

    Jetzt will ich das der string so wie er ist auf eine andere Seite übergeben wird, das problem ist das $name gleich aufgelöst wird. Ich will das aber erst auf der nächsten Seite auflösen. Wenn der sql String auf der nächsten Seite ankommt soll also noch immer $name dort stehen und nicht peter....

    Ich suche also sowas ähnliches wie ein escapeZeichen oder so....

    PS: $name ist nämlich erst auf der seite vorhanden an die ich den sql string schicke...

    geht das überhaupt?

    danke schomal
    lg



  • nein das geht nicht da $name eine phpvariable ist und die von php eingesetzt wird.
    du kannst aber den inhalt von name per session übergeben. ist aber das gleiche wenn du den ganzen query übergibst. das sollte man aber aus sicherheitsgrunden auch nicht machen.
    ich sehe aber keine sinn darin $name erst im nächsten script auszuwerten.



  • ... wie würde ich es denn machen wenn ich ein $-Zeichen gefolgt von irgendwelchen zeichen in einen string einbauen will?? Das soll dann natürlich auch nicht als variable angesehen werden. geht das nicht?!?

    lg



  • PHP-String mit Variable drin:

    $sql = "update table set name='\$name' where.....";  // Lösung 1
    $sql = 'update table set name=\'$name\' where.....'; // Lösung 2
    

    Auf der anderen Seite könntest du beispielsweise folgendes machen:

    $sql = eval ('return "' . addslashes ($sql) . '";'); // Variablen auflösen
    


  • Neku schrieb:

    Auf der anderen Seite könntest du beispielsweise folgendes machen:

    $sql = eval ('return "' . addslashes ($sql) . '";'); // Variablen auflösen
    

    Bloß nicht!
    eval() ist eine der schlimmsten Funktionen, die PHP zu bieten hat: Miserabler Stil, grottig langsam und in 99% aller Fälle unnötig ...

    Ich kann mich nur Unix-Tom anschließen; was soll das?



  • Reyx schrieb:

    Neku schrieb:

    Auf der anderen Seite könntest du beispielsweise folgendes machen:

    $sql = eval ('return "' . addslashes ($sql) . '";'); // Variablen auflösen
    

    Bloß nicht!
    eval() ist eine der schlimmsten Funktionen, die PHP zu bieten hat: Miserabler Stil, grottig langsam und in 99% aller Fälle unnötig ...

    Ich kann mich nur Unix-Tom anschließen; was soll das?

    Also eval() verwende ich sehr gerne für Templates. Das dürfte in PHP dutzende Male schneller sein, als manuell einen String komplett nach Variablen abzusuchen und diese in einer Schleife zu ersetzen.

    Aber in diesem Fall hier stellt sich wirklich die Frage: wozu?



  • Warum löst du es nicht mit einer "zwischenvariable"?

    # SEITE 1
    $mein_string = 'das ist mein String mit einer $variable';

    {übergebe sring auf SEITE 2}

    # SEITE 2
    mein_string=str_replace(mein\_string = str\_replace( 'variable', "Die Variable", $mein_string );



  • Neku schrieb:

    Also eval() verwende ich sehr gerne für Templates. Das dürfte in PHP dutzende Male schneller sein, als manuell einen String komplett nach Variablen abzusuchen und diese in einer Schleife zu ersetzen.

    Wozu? Da kannst du das Script gleich direkt ausführen (falls nicht, hast du irgendetwas in deiner Softwarestruktur fürchterlich falsch gemacht 😉 )!



  • @Reyx:
    Dein Code ist an sich in Ordnung und Schnell. Wenn man dies, aus irgendwelchen Gründen so nicht lösen will, würde sich die Idee mit dem "String-Ersetzen" anbieten.



  • JayJay schrieb:

    Dein Code

    Welcher mein Code? Du meinst wohl den von Neku 😉



  • Mein ich ja 😮



  • Reyx schrieb:

    Neku schrieb:

    Also eval() verwende ich sehr gerne für Templates. Das dürfte in PHP dutzende Male schneller sein, als manuell einen String komplett nach Variablen abzusuchen und diese in einer Schleife zu ersetzen.

    Wozu? Da kannst du das Script gleich direkt ausführen (falls nicht, hast du irgendetwas in deiner Softwarestruktur fürchterlich falsch gemacht 😉 )!

    Script? Ich rede von Templates 😛

    HTML-Dateien, in der an beliebiger Stelle beliebige PHP-Variablen vorkommen können. Zusätzlich gibt es <if>, <elseif>, <else>, <return> etc.



  • neku 😮

    eval() ist evil!
    da ist es echt wurscht ob du das für templates benutzt oder für was ganz anderes...



  • eval benötigt Millisekunden. Solange ich keine bessere Möglichkeit finde, PHP-Variablen in einem String ersetzen zu lassen, werde ich das auch weiterhin verwenden. Wenn PHP hier eine Funktion anbieten würde wäre schön.
    Ich könnte es höchstens so umschreiben, dass ich include() statt eval() verwende 😛 Aber häufige includes dürften noch schwerer sein.

    Bei mir werden die Templates sozusagen vorkompiliert. <if>, <elseif>, <else>, <return> und Variablen werden in PHP-Code umgewandelt und das ganze zusammen mit einer Menge Strings gespeichert. Wird die Template verwendet, wird der Code per eval() ausgeführt. Bei include() würde jedes mal die Template-Datei neu geladen, was in Schleifen nicht wünschenswert ist. Das Parsen zur Laufzeit ist auch nicht das Wahre.



  • Leute! Streitet euch doch nicht um Eval oder nicht.
    Ich sehe jedenfalls das Problem des Fragestellers nicht.
    Wenn in einer PHPSEITE eine phpvariable drin ist dann ist der INhalt der Variable eben da drin und PHP interpretiert es eben so.
    Will man diesen INHALT an eine andere Seite weitergeben dann über die URL oder mit Session.
    Die Variable kann man nicht weitergeben den die Variable ist ja der Inhalt in dieser.



  • ... danke Leute, die Ansätze find ich super!

    Nur um der allgemeinen Verwirrung bez. Sinnhaftigkeit nachzukommen: Ursprünglich war aller Code auf einer Seite und die ist echt groß, jetzt hab ich aber einen HTML Teil auf eine Anderre Seite ausgelagert welchen ich dann mit include einbinde wenn ich ihn brauche. Dieser HTML code ist eben ein Template und von denen gibt es mehrere. Um jetzt nicht all zuviel ändern zu müssen lasse ich die datenbanksachen auf der ursprünglichen Seite während die forms auf der neuen Seite sind. Da jedes Template aber anders aussieht(eh klar..) hat natürlich das insert und update statement auf der ursprünglichen Seite ein Problem. Meine Lösung war nun das ich auch den SQL string den ich brauche auch gleich in den Templates zusammensetze und den dann eben per session auf die seite übergebe wo die datenbanksachen ausgeführt werden. that´s it! 🙂

    MAg wohl ein bißchen ungewähnlich sein aber wie schon gesagt, hab keine Zeit und Lust so viel zu ändern 😋

    danke nochmal
    lg



  • Smarty ist ein Templatesystem. Trennung HTML und Code.
    Dein Ansatz selbst ist aber auch nicht so besondern. Dafür gibt es Klassen und Funktionen.



  • .. wie gesagt die umrüstung kostet zuviel zeit!

    danke trotzdem
    lg


Anmelden zum Antworten