Jump to content

Problem with template class


Kload

Recommended Posts

 

 

Well i have this set of codes

 

<?php

include "includes/config.php";

class template{

    var $page;

    var $built;

    public $block = array();

 

    function _start($tpl){

        $this->page = $tpl;

    }

 

    function set_array($data){

        $this->block[] = $data;

    }

 

    function _show(){

        foreach($this->block as $k => $v){

            foreach($v as $k1 => $v1){

                //echo $k1."<br />";

                //echo $v1."<br />";

                $this->page = str_replace("{".$k1."}", $v1, $this->page);

            }

        }

        echo $this->page;

    }

}

 

$template = new template();

 

$file = "<html>

<body>

<p>{CAT}</p>

<p>{SUBCAT}</p>

</body>

</html>";

 

$template->_start($file);

 

// Category Query

while($row1 = mysql_fetch_assoc($cat)){

 

$template->set_array(array("CAT" => $row1['title']));

 

// Sub Category Query

while($row2 = mysql_fetch_assoc($subcat)){

 

$template->set_array(array("SUBCAT" => $row2['title']));

 

}

}

 

$template->_show();

 

?>

Now, when i echo $k1 or $v1 they display the keys and values in the correct order like

 

CAT1

SUBCAT1.1

SUBCAT1.2

CAT2

SUBCAT2.1

SUBCAT2.2

 

but when it goes through the str_replace its only displays the CAT1 and SUBCAT1.2 what going wrong?

 

Link to comment
https://forums.phpfreaks.com/topic/248806-problem-with-template-class/
Share on other sites

You are overwriting the 'template' with the result of the str_replace(). After the first two iterations of the loops, the {CAT} and {SUBCAT} tags in the template don't exist.

 

I recommend storing the output in a different variable than the actual 'template'.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.