PHP Code wird nicht geparst.

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


    • #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:

      Comment


      • #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

        Comment


        • #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...

          Comment


          • #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

            Comment


            • #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...
              Last edited by .elementrio; 18-12-2005, 17:02.

              Comment


              • #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.

                Last edited by .elementrio; 18-12-2005, 19:22.

                Comment

                Working...
                X