PHP и Smarty Execution - PullRequest
       2

PHP и Smarty Execution

2 голосов
/ 08 декабря 2011

Например, у меня есть этот запрос в моем файле news.php :

$sql = 'SELECT * FROM `news` ORDER BY `id` DESC LIMIT 0, 5'; 
$result = mysql_query($sql) or die("Query failed : " . mysql_error());
while ($line = mysql_fetch_assoc($result)) {
    $value[] = $line;
}
// Assign this array to smarty...
$smarty->assign('news', $value);
 // Display the news page through the news template
$smarty->display('news.tpl');

Однако в моем файле news.tpl я не буду помещатьпеременные {$ news} .Будет ли запрос по-прежнему выполняться при просмотре news.php или он будет просто проигнорирован?

1 Ответ

3 голосов
/ 08 декабря 2011

Да , запрос все равно будет выполнен, потому что вы сначала загружаете файл PHP.Как только запрос будет выполнен, ваш PHP-файл загрузит шаблон независимо от того, введете ли вы {$news} или нет, запрос к базе данных будет выполнен.флаг (например):

http://www.domain.com/news.php?show=0

и затем в вашем PHP:

$value = array(); // this way if the variable is not used, you create a empty array.

if(isset($_GET['show']) && $_GET['show'] == 1) {
    $sql = 'SELECT * FROM test.`name` ORDER BY 1 DESC LIMIT 0, 5';
    $result = mysql_query($sql) or die("Query failed : " . mysql_error());
    while ($line = mysql_fetch_assoc($result)) {
        $value[] = $line;
    }
}
// Assign this array to smarty...
$Smarty->assign('news', $value);

// Display the news page through the news template
$Smarty->display('news.tpl');

и в вашем .tpl:

{section name=loopname loop=$news}
  // your news code
{sectionelse}
  No news today!
{/section}
{$news}
...