[PHP] Variabelen pasten vanuit de database

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ahbruinsma
  • Registratie: Juni 2004
  • Laatst online: 17-06 10:22
Ok, ik heb het volgende probleem:

Ik gebruik templates die in de database staan, in die templates staan variabelen die moeten worden ingevuld zo gauw die pagina word opgeroepen.

Ik gebruik de volgende functie voor het ophalen van de template en verwerken van de code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function template($var1, $var2)
{
$login="user";
$pass ="password";
$db=mysql_connect("localhost",$login,$pass) OR DIE( "Connect Error");
mysql_select_db("database",$db);
$sql1 = "SELECT * FROM manager_templates WHERE page_name='".$var1."' AND template_id='".$var2."'";
$result1=MySQL_query($sql1,$db);
$myrow1=MySQL_fetch_array($result1);
$content=$myrow1["content"];
                    
ob_start(); 
eval("echo \"".addslashes($content)."\";"); 
$content= ob_get_contents(); 
ob_end_clean (); 
$content=stripslashes($content); 
return $content;            

}


Wanneer ik het rechtstreeks gebruik in de desbetreffende php-pagina werkt het wel, maar als ik er een functie van maak, en in een apart php-bestand zet, zoals hierboven geeft ie dus geen resultaat.

Weet iemand waar de fout zit, of een mogelijke oplossing?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dit klinkt dommer dan het bedoeld is, maar roep je de functie wel aan? Die fout wil ik ook nog wel eens maken. :)

offtopic:
Waarom gebruik je op regel 13 eval()? Je kan toch ook gewoon echo-en?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 16:30

TheDane

1.618

include je dat nieuwe bestand dan ook wel ?

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

en echo je wel het resultaat van de functie?

btw, dit is echt de meest ranzige vorm van templates die ik ook gezien heb:
PHP:
1
2
3
4
5
6
ob_start();
eval("echo \"".addslashes($content)."\";");
$content= ob_get_contents();
ob_end_clean ();
$content=stripslashes($content);
return $content;
:X :X

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • Dutchmega
  • Registratie: September 2001
  • Niet online
drm schreef op 03 juni 2004 @ 21:21:
en echo je wel het resultaat van de functie?

btw, dit is echt de meest ranzige vorm van templates die ik ook gezien heb:
PHP:
1
2
3
4
5
6
ob_start();
eval("echo \"".addslashes($content)."\";");
$content= ob_get_contents();
ob_end_clean ();
$content=stripslashes($content);
return $content;
:X :X
Idd.. Vage code |:( |:( |:(
PHP:
1
2
3
4
5
6
ob_start();
eval("echo \"".addslashes($content)."\";");
$content= ob_get_contents();
ob_end_clean ();
$content=stripslashes($content);
return $content;


Niet gewoon:

PHP:
1
return $content;


>:)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

drm schreef op 03 juni 2004 @ 21:21:
en echo je wel het resultaat van de functie?

btw, dit is echt de meest ranzige vorm van templates die ik ook gezien heb:
PHP:
1
2
3
4
5
6
ob_start();
eval("echo \"".addslashes($content)."\";");
$content= ob_get_contents();
ob_end_clean ();
$content=stripslashes($content);
return $content;
:X :X
Nogal ja, ik wilde al niet de moeite doen om het te begrijpen, het zag mij er te vaag uit. :D Maar je zou idd zeggen dat een simpele return $content dat alles afvangt ja... :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • ahbruinsma
  • Registratie: Juni 2004
  • Laatst online: 17-06 10:22
Nah ja :P

Dit was een oplossing aangeboden door iemand op PHP.net, dus zo dom zal ie wel niet wezen ;)

Het gaat er juist om dat ie die template oproept met de variabelen er nog in en dat er dan wat mee gebeurt afhankelijk van de verder php-code die je gebruikt na de functie. Om dit voor mekaar te krijgen zou ik die ob_start zooi moeten gebruiken zeiden ze tegen me. Het werkt ook wel maar niet als ik dezelfde code via een functie aanroep.

En ja ik roep de functie correct aan, heb 'm ge-included en ik echo 'm ook...

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

NMe84 schreef op 03 juni 2004 @ 21:30:
Maar je zou idd zeggen dat een simpele return $content dat alles afvangt ja... :?
Nee, in de database staan waarschijnlijk strings in de vorm van
bladiebladiebla some $var and some other $var2
Door die eval (en het gebruik van dubbele quotes), worden de $var en $var2 vervangen door de waarden van die variabelen.

Maar gezien het in een functie gebruikt wordt, zullen die variabelen niet bestaan op de plaats van de eval. Misschien dat dat ook het probleem is? Je kunt dan een extreem ranzige oplossing gebruiken om alle globale variabelen in je functie te kunnen gebruiken:
PHP:
1
2
3
function ... () {
   extract ( $GLOBALS );
}
maar het feit dat ik mezelf nu een week lang verbied te eten zegt wel genoeg over de ranzigheid hiervan, denk ik :P

Wat je beter kunt doen is even zoeken hier op het forum naar templates. En is al een groot aantal voorbijgekomen in de afgelopen jaren, en ze zijn toch voor het grootste deel wel een stukje beter dan deze :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • ahbruinsma
  • Registratie: Juni 2004
  • Laatst online: 17-06 10:22
Dat zou inderdaad kunnen, omdat ze daar niet bekend zijn.. maar om ze nou GLOBAL te maken dat gaat mij ook een beetje te ver.

Ik zal in ieder geval nog ff verder prutsen en door de verschillende template-topics heen worstelen. Heb al het één-en ander gezien.

Bedankt in ieder geval voor de hulp :)

Acties:
  • 0 Henk 'm!

Verwijderd

drm schreef op 03 juni 2004 @ 22:02:
maar het feit dat ik mezelf nu een week lang verbied te eten zegt wel genoeg over de ranzigheid hiervan, denk ik :P
wiehoe :)

[ontopic]
je kan natuurlijk ook gewoon een bestaande parser zoals ets of smarty gebruiken
[/ontopic]

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 04 juni 2004 @ 22:20:
wiehoe :)

[ontopic]
je kan natuurlijk ook gewoon een bestaande parser zoals ets of smarty gebruiken
[/ontopic]
Zelf maken is:
1) leuker :P
2) beter afgestemd op wat jij hebben wil, en dus
3) sneller (mits goed geprogrammeerd) ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1