Matzeeee: Variable aus einem Template übergeben

Einen schönen Nachmittag wünsche ich !!

Mein Anliegen ist, dass ich gerne eine Variable aus einem Template an eine php Datei übergeben will, in der Funktionen gespeichert sind.

template.tpl

  
if ($_POST['send'] == "bla"){  
    echo "bla";  
}  

functions.php

  
function blablubb (){  
if ($_POST['send'] == "bla"){  
    $sql = "  
    UPDATE asd  
    SET preis=(hier würd ich dann mit Variablen arbeiten wollen)";  
    mysql_query($sql);  
    }  
}  

der sinn dabei ist (welhalb ich das nicht gleich in die tpl schreib) dass ich den query dann belibig platzieren könnte.

  1. Einen schönen Nachmittag wünsche ich !!

    Mein Anliegen ist, dass ich gerne eine Variable aus einem Template an eine php Datei übergeben will, in der Funktionen gespeichert sind.

    template.tpl

    if ($_POST['send'] == "bla"){
        echo "bla";
    }

    
    >   
    > functions.php  
    > ~~~php
      
    
    > function blablubb (){  
    > if ($_POST['send'] == "bla"){  
    >     $sql = "  
    >     UPDATE asd  
    >     SET preis=(hier würd ich dann mit Variablen arbeiten wollen)";  
    >     mysql_query($sql);  
    >     }  
    > }  
    > 
    
    

    der sinn dabei ist (welhalb ich das nicht gleich in die tpl schreib) dass ich den query dann belibig platzieren könnte.

    Meistens liegt das Template in Form eines Objectes vor. Das ganze wird so initialisiert:
    $objTemplate = new Template("datei.tpl");
    Das objTemplate hat das diverse Methoden um z.B. Variablen zu setzen:
    $objTemplate->setVariable("deine","mudda");
    Um jetzt in einer Funktion eine Template Variable zu setzen kannst du entweder das Template Objekt übergeben oder mittels Global (falls es im Globalen Bereich liegt) herein holen:
    function blablubb($objTemplate){...}
    oder
    function blablubb()
    {
    global $objTemplate
    }

    dann kannst du jeweils Werte setzen.

    Dass ganze ist aber rein spekulativ, da ich keine Ahnung habe wie deine Template Klasse, Funktion, Methode, Vererbung, Fabrik arbeitet.

    Gruß
    Hellsehender und trotzdem kein Lottospielender
    T-Rex

  2. Moin!

    Mein Anliegen ist, dass ich gerne eine Variable aus einem Template an eine php Datei übergeben will, in der Funktionen gespeichert sind.

    Sowas tut man nicht.

    Zum einen technisch nicht: Die PHP-Datei definiert Funktionen oder Klassen, die deshalb dann global bekannt sind und aufgerufen werden können. Du übergibst eine Variable deshalb nicht "an eine php Datei", sondern "an eine Funktion, die du aufrufst". Das ist technisch was anderes.

    Zum anderen fachlich nicht: Deine Beispielfunktion tut etwas, was man in einem Template nicht tun sollte (manche würden sogar von "nicht tun DARF" sprechen). Das Template ist nur dafür da, das Ergebnis eines Bearbeitungsschritts wieder an den User zurückzugeben und dabei hübsch zu formatieren.

    Ein Update in der Datenbank durchzuführen ist nicht Aufgabe der Template-Ausgabe, sondern das ist die Aufgabe des kontrollierenden Codes, der den Request abarbeitet und am Ende (mittels Template) einen Response zusammenfügt.

    der sinn dabei ist (welhalb ich das nicht gleich in die tpl schreib) dass ich den query dann belibig platzieren könnte.

    Ja, O Wunder: Magie der Funktionsdeklaration. :)

    - Sven Rautenberg

  3. hi,

    der sinn dabei ist (welhalb ich das nicht gleich in die tpl schreib) dass ich den query dann belibig platzieren könnte.

    Das kannst Du machen, indem Du Dein Statement präparierst mit ??? als Platzhalter:

      
    UPDATE asdf SET x = ? WHERE y = ?  
    
    

    und dann beim execute nur noch die beiden Werte einsetzt. Stichwort prepared statement, Template ist nicht der richtige Ausdruck dafür.

    O'Hotti

    1. Moin!

      Das kannst Du machen, indem Du Dein Statement präparierst mit ??? als Platzhalter:

      UPDATE asdf SET x = ? WHERE y = ?

      
      >   
      > und dann beim execute nur noch die beiden Werte einsetzt. Stichwort prepared statement, Template ist nicht der richtige Ausdruck dafür.  
        
      Wo steht, dass das Update-Statement im Template steht?  
        
       - Sven Rautenberg