«Двойная» оценка в PHP - PullRequest
0 голосов
/ 29 марта 2011

Утро всем!

Мой запрос MySQL возвращает имя переменной PHP, которую я хотел бы "удвоить", оценивая при выводе.Для меня может быть лучше сделать это на примере.

На странице статических ресурсов у меня есть:

$page1 = "test1.php";
$page2 = "test2.php";

И моя таблица MySQL с именем tbl_pages содержит 2 записи в fld_pagename: $ page1$ стр.2.Таким образом, я полагаю, что я определяю только $ page1 и $ page2.

Теперь на странице, над которой я работаю, у меня есть запрос, который возвращает имя страницы:

$query = mysql_query("SELECT fld_pagename FROM tbl_pages WHERE fld_show = 1 ORDER BY fld_ref");
while($row = mysql_fetch_array($query)){
    $nameofpage = $row['fld_pagename'];
    echo "$nameofpage",'<br />';
}

Однако двойные кавычки вокруг переменной оценивают переменную только до одного уровня.Его вывод:

$page1<br />$page2<br />

Но я хочу, чтобы эти переменные были оценены перед выводом:

test1.php<br />test2.php<br />

Любые мысли очень ценятся!

Ответы [ 4 ]

0 голосов
/ 29 марта 2011

похоже, ваша база данных неверна.
Нет единой причины хранить имена переменных PHP в базе данных.
Храните pagenames, и все будет хорошо

0 голосов
/ 29 марта 2011

Если вы оцениваете страницы, на которые ссылаетесь, это будет работать:

$query = mysql_query("SELECT fld_pagename FROM tbl_pages WHERE fld_show = 1 ORDER BY fld_ref");
while($row = mysql_fetch_array($query)){
    $nameofpage = $row['fld_pagename'];
    include($nameofpage);
    echo '<br />';
}
0 голосов
/ 29 марта 2011

Если я правильно вас понял, вы можете использовать эту функцию PHP (пример):

$test1=1234;
$test2='test1';
echo $$test2; // echoes 1234

Или, чтобы сделать ее совместимой с вашей системой ...

$nameofpage=substr($nameofpage,1); // remove dollar
echo $$nameofpage.'<br/>';
0 голосов
/ 29 марта 2011

Если вы сохраняете только имя переменной без $, вы можете использовать функцию переменной переменной PHP

   echo $$nameofpage,'<br />';

может удалить $ из сохраненного ввода

 $nameofpage=substr( $nameofpage, 1 );
 echo $$nameofpage,'<br />';
...