Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

kada ispisuje iz baze, str_replace ne radi

[es] :: PHP :: kada ispisuje iz baze, str_replace ne radi

[ Pregleda: 1845 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pasvord
mali mrmot

Član broj: 40825
Poruke: 52
85.158.33.*



Profil

icon kada ispisuje iz baze, str_replace ne radi24.01.2007. u 02:47 - pre 209 meseci
pozdravi :)

Nasao sam na netu neki mali "template engine" i sve je radilo dok nisam iz baze ispisiva polje u kojem se nalazi html kod. Znaci imam
$q_ = mysql_query("select * from ...");
$q = mysql_fetch_array($q_);
echo $q['nesto'];

Naravno, sve se fino ispise ali onda nece da {nesto} i {nestoDrugo} (to se nalazi u polju koje ispisujem) zamjeni sa vrijednostima koje sam zadao, dok kada napisem echo "{nesto} {nestoDrugo}"; (isto onako kako je u polju u bazi) normalno mijenja sa zadanim vrijednostima.



template.engine.php (radi):
Code:

<?
class TemplateEngine // This is our TemplateEngine class.
{
    var $Template; // Current Templates Name.
    var $TemplateDir = './templates/'; // Templates Dir.
    
    function SelectTemplateFile($file, $error_line = 0, $error_file = '') // This function will select the requested templates .tpl file.
    {
        if(is_dir($this->TemplateDir)) // If the $templatedir exsits.
        {
            if(!file_exists($this->TemplateDir.$file.$this->TemplateExt)) // If the .tpl file does not exsit.
            {
                $error = "<b>File:</b> ".$error_file."<br/>
                <b>Line:</b> ".$error_line."<br/>
                <b>Date:</b> ".date("D M j G:i Y")."<br/><br/>
                Error loading ".$this->TemplateDir.$file.$this->TemplateExt.", file does not exist.";
                return die($error); // Returns $error.
            }
            elseif(file_exists($this->TemplateDir.$file.$this->TemplateExt)) // ElseIf the file exsits.
            {
                return $this->Template=file_get_contents($this->TemplateDir.$file.$this->TemplateExt); // Returns the current templates data.
            } // End ElseIf.
        }
        elseif(!is_dir($this->TemplateDir)) // ElseIf the directory does not exsit.
        {
                $error = "<b>File:</b> ".$error_file."<br/>
                <b>Line:</b> ".$error_line."<br/>
                <b>Date:</b> ".date("D M j G:i Y")."<br/><br/>
                Error opening ".$this->TemplateDir.", directory does not exist.";
                return die($error); // Returns $error.
        } // End ElseIf.
    } // End Function.
    
    function ReplaceVars($vars=array(), $error_line = 0, $error_file = '') // This will replace {var} with a array value.
    {
        if (sizeof($vars) > 0) // If the array of vars is not emtpy.
        {
            foreach ($vars as $var => $content) // Loops through the array.
            {
                $this->Template=str_replace("{".$var."}", $content, $this->Template); // Replaces {var} with the array value ($content).
            } // End Foreach.
        }
        else // Else the array of vars is empty.
        {
            $error = "<b>File:</b> ".$error_file."<br/>
            <b>Line:</b> ".$error_line."<br/>
            <b>Date:</b> ".date("D M j G:i Y")."<br/><br/>
            Error no tags destined for replacemnt.";
            return die($error); // Returns $error.
        } // End Else.
    } // End Function.
    
    function Compile() // This function will compile to template and display it.
    {
        eval("?>".$this->Template."<?"); // This simply allows us to add php into the .tpl file it self, and also returns the finished template.
    } // End Function.
} // End Class.
?>  



index.php:
Code:

<?
$host="localhost";
$pw="";
$un="";
$db="";

$sel = mysql_connect($host,$un,$pw) or die (mysql_error());
mysql_select_db($db,$sel);

 require_once("template.engine.php");
$TemplateEngine = new TemplateEngine;
$TemplateEngine->SelectTemplateFile("template.php", __LINE__, __FILE__);

$TemplateEngine->ReplaceVars(array(
"name" => "NAME",
"message" => "MESSAGE"
), __LINE__, __FILE__);
$TemplateEngine->Compile(); 
?>



template.php - tpl file(ovdje nastaje problem :( ) file se nalazi u templates folderu:
Code:

<?
$s_ = mysql_query("select * from tabelaz") or die (mysql_error());
$s = mysql_fetch_array($s_);
$tpla = $s["izgled"];
echo $s["izgled"];

//Ispod radi, iznad ne

$tpl = "<br><br>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
<title>Template Engine Test</title>
</head>

<body>
Hello {name}!<br>
{message}
</body>
</html>";
echo $tpl;
?>


[Ovu poruku je menjao pasvord dana 25.01.2007. u 03:00 GMT+1]
 
Odgovor na temu

vladimirn
Vladimir Nikolic
Novi Sad

Član broj: 38585
Poruke: 81
*.static.sbb.co.yu.



Profil

icon Re: kada ispisuje iz baze, str_replace ne radi24.01.2007. u 08:41 - pre 209 meseci
Code:
$host="localhost";
$pw="";
$un="";
$db="";

$sel = mysql_connect($host,$un,$pw) or die (mysql_error());
mysql_select_db($db,$sel);


Koliko vidim ti ovde nisi odabrao nijednu bazu. Da nije to u pitanju>?
 
Odgovor na temu

pasvord
mali mrmot

Član broj: 40825
Poruke: 52
85.158.33.*



Profil

icon Re: kada ispisuje iz baze, str_replace ne radi24.01.2007. u 15:14 - pre 209 meseci
ne, ne, to sam izbrisao pri kopiranju ovde :)
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: kada ispisuje iz baze, str_replace ne radi24.01.2007. u 20:36 - pre 209 meseci
Umesto mysql_fetch_array treba ti mysql_fetch_assoc.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

pasvord
mali mrmot

Član broj: 40825
Poruke: 52
85.158.33.*



Profil

icon Re: kada ispisuje iz baze, str_replace ne radi24.01.2007. u 21:03 - pre 209 meseci
mVeliki, probao sam i to, ne radi :(
potpuno sam bez ideje :(
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: kada ispisuje iz baze, str_replace ne radi24.01.2007. u 21:48 - pre 209 meseci
error_reporting(E_ALL);
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

flylord
Ilić Aleksandar
Simplicity d.o.o.
Nis/Uzice

Član broj: 2954
Poruke: 3859
*.dynamic.sbb.co.yu.

ICQ: 4849714


+68 Profil

icon Re: kada ispisuje iz baze, str_replace ne radi24.01.2007. u 21:58 - pre 209 meseci
Code:
$TemplateEngine->ReplaceVars(array(
"name" => "NAME",
"message" => "MESSAGE"
), __LINE__, __FILE__);
$TemplateEngine->Compile(); 


gde si definisao ovo NAME I MESSAGE (kad ga izvlacis iz baze) ? Gde ti je taj kod?
 
Odgovor na temu

pasvord
mali mrmot

Član broj: 40825
Poruke: 52
85.158.33.*



Profil

icon Re: kada ispisuje iz baze, str_replace ne radi25.01.2007. u 02:03 - pre 209 meseci
skont'o sam da problem je u tome sto template.engine.php ucita cijeli template file, zatim zamjeni sve sa zadanim vrijednostima ({name} sa "NAME" i {message} sa "MESSAGE"), a onda (u ovom slucaju template file je php) ga pokrene, sto dovodi do naknadnog ispisivanja texta iz baze i naravno tako ne obavi nikakvu zamjenu

@flylord
ako sam te dobro razumio, u bazi se nalazi sve isto (isti html) kao u varijabli $tpl (pogledaj kod template.php)
 
Odgovor na temu

[es] :: PHP :: kada ispisuje iz baze, str_replace ne radi

[ Pregleda: 1845 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.