Hallo Tom,

am Samstag, 23. August 2003 um 17:50 hast Du Folgendes gekritzelt:


TR> This works for me, what error message do you get? Make sure you use
TR> single quotes in the eval otherwise the string will get substituted
TR> before eval gets a look at it.

TR> <?php
TR> $contentarray = array(1=>'testpage');
TR> function testpage(){
TR>         echo 'Test succceeded <br>';
TR> }
TR> $i = 1;
TR> $databasepagename = 'array';

TR> eval('${"content".$databasepagename}[$i]();');
?>>

That's the error I find in the apache-log. On the screen, I get
nothing but a white page. By the way I have error_reporting(E_ALL);
but I never get errors reported...

PHP Fatal error:  Call to undefined function:  () in 
/usr/local/www/showFunctions.php(77)

Your script is working. But mine not... is it because I'm on a output
buffer? I use ob_start() just before, because the real output is
produced by the function I want to call with the eval method...

Here the part of my script:

$query = "SELECT pagename FROM pages";
$result = mysql_query($query);
$a = 0;
while($row = mysql_fetch_array($result, MYSQL_BOTH)){
  $page[$a] = $row["pagename"];
  $fct[$a] = $page[$a];
  $fct[$a] = substr($fct[$a],1);
  $fct[$a] = str_replace(".php", "", $fct[$a]);
  $fct[$a] = ucfirst($fct[$a]);
  $a++;
}
mysql_free_result($result);

ob_start();

for($b = 0; $b < sizeof($fct); $b++){
  if($_SERVER["PHP_SELF"] == $page[$b])
    eval('${"content".$fct}[$b]();');
}

...

The "pagename" in the database is stored like /about.php so I change
it to About in the while-loop.

The eval method is there to replace my actual code (which is static):
if($_SERVER["PHP_SELF"] == "/login.php")
  contentLogin();
if($_SERVER["PHP_SELF"] == "/logout.php")
  contentLogout();

...

Using the "if-cascade", it is working, for you to know that the
mistake is definitly in the eval()-method...

Thx for your time...

SvT


-- 
Who is the ennemy?

mailto:[EMAIL PROTECTED]


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to