PHP Code wird nicht geparst.

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

  • PHP Code wird nicht geparst.

    Guten Tag,

    Ich hab ein Problem, bei mir werden die PHP Answeisungen in einer HTML (Template) Datei garnicht geparst werden nur einfach so anzeigt.

    Ich versuche nen Gästebuch zu schreiben, bis her klappt alles wunderbar nur eben das ich zb. keine If anweisungen machen kann.


    Fehler:


    Hier kann ich zb. kein Count...machen, es wird einfach komisch angezeigt.

    PHP-Code:
    PHP-Code:
    $entries=null;
      
    $count mysql_query("SELECT count(*) FROM einträge");
      
    $sql mysql_query("SELECT * FROM einträge ORDER BY id Desc");
      while(
    $row mysql_fetch_array($sql)) {
        
    $row['name'] = htmlentities($row['name']);
        
    $row['text'] = htmlentities($row['text']);
        
    $row['text'] = nl2br($row['text']);
        
    $row['date'] = date("d.m.Y"); 
        eval (
    "\$entries.= \"".template("entries")."\";");
        echo 
    $count;
        } 
    Ich hab von nen Freund gehört das es wegen der Template Funktion ist.
    Hier die Funktion:
    PHP-Code:
    function template ($tpl)
       {
       
    $tplfolder="./templates";
       
    $filename=$tplfolder."/".$tpl.".html";
       if(!
    $tplfolder$tplfolder "templates";
          
    $text implode("",file($tplfolder."/".$tpl.".html"));

       return 
    str_replace("\"","\\\"",$text);
       } 

  • #2
    Hi

    Nein, das hat mit der Templatefunktion nichts zu tun

    PHP-Code:
    <?php
        $entries 
    null;
        
    $count mysql_query("SELECT count(*) AS anzahl FROM einträge"); // Hier musst du ein Alias vergeben
        
    $sql mysql_query("SELECT * FROM einträge ORDER BY id DESC"); 
        while(
    $row mysql_fetch_array($sql)) {
            
    $row['name'] = htmlentities($row['name']);
            
    $row['text'] = htmlentities($row['text']);
            
    $row['text'] = nl2br($row['text']);
            
    $row['date'] = date("d.m.Y"); 
            eval (
    "\$entries.= \"".template("entries")."\";");
        } 
        
        
    $row2 mysql_fetch_assoc($count); // du hast das fetch vergessen (darum Ressource id #7)
        
    echo $row2['anzahl'];
    ?>
    Dein Problem war, dass du beim count 1. kein Alias vergeben hast und 2. keinen Fetch durchgeführt hast.


    Mfg Fab

    Kommentar


    • #3
      Ah vielen Dank, das ging ja schnell.

      Und jetzt habe ich aber noch immer das Problem das die if anweisungen einfach so angezeigt werden. Also die werden garnicht geparst sonder nur die Variablen.

      Ich hab folgendes in ne Template reingeschrieben.

      PHP-Code:
       if($test == '0') {
         echo 
      "error";
         }
         else {
         
      $entries
         

      Da wird der Code einfach angezeigt, die if anweisung funktoniert nicht.

      Siehe hier:

      Kommentar


      • #4
        Hi

        Das ist allerdings komisch...

        PHP-Code:
        return str_replace("\"","\\"",$text); 
        Was willst du genau mit diesem Code bewirken?

        Für mich sieht das irgendwie nach einem Parse-Error aus.


        Mfg Fab

        Kommentar


        • #5
          Wenn ich die Zeile wegtue werden die templates überhaupt nicht geladen.

          Könnt ihr mir ein kleines Templatesystem nennen, die variablen,....parst. Ich hab gehört eval ist nicht so gut. Ich will jetzt nicht sowas wie Smarty sonder etwas simpleres....

          Sowas in der Art:
          PHP-Code:
          $tpl = new template();
          class 
          template{

              var 
          $varcache = array();
              var 
          $valuecache = array();
              function 
          assign($varname,$value)
              { 
                
          $maxcount($this->varcache);
                for(
          $i=0;$i<$max;$i++)
                {
                  if(
          "{\$$varname}"==$this->varcache[$i])
                  {
                      
          $this->valuecache[$i]=$value;
                      return;
                  }
                }
                
          $this->varcache[]    ="{\$$varname}";
                
          $this->valuecache[]  =$value;
              }
              function 
          clear()
              {
                
          $this->varcache ="";
                
          $this->valuecache ="";
              }  
              function 
          prepass($template)
              {
                
          $tpldir "templates";
                
          $template implode("",file("$tpldir/"."$template".".tpl"));
                
          $template str_replace($this->varcache,$this->valuecache,$template);
                return 
          $template;
              }
              
              function 
          out($template)
              {
                echo 
          $this->prepass($template);
              }

          Hier werden aber die variablen net geparst...

          Kommentar


          • #6
            Hi

            Schau dir mal das hier an:

            http://www.devmag.net/webprog/php_fast_template.htm

            Sieht ziemlich simpel aus, leistet aber das gewünschte.

            Mfg F4b

            Kommentar


            • #7
              Aber mit ner php3 endung, würde es einwandfrei funktonieren wenn ich es einfach in php umbenne oder hätte das irgendwelche nachteile?

              Edit:
              Funktoniert garnicht...
              Zuletzt geändert von .elementrio; 18.12.2005, 18:02.

              Kommentar


              • #8
                Hab gerade was gefunden, finde ich recht schön.
                http://www.php-resource.de/tutorials/read/20/1/

                Aber kann ich hier per variable keine template laden???Versteht ihr was ich meine?

                Edit:
                Wahrscheinlich kann ich auch keine if anweisungen in der template bauen, kann mir jemand ma sagen was ich im code ändern muss damit das funkt.

                Zuletzt geändert von .elementrio; 18.12.2005, 20:22.

                Kommentar

                Lädt...
                X