使用Smarty在tpl中调用的php查询

时间:2017-05-12 08:17:08

标签: php mysql smarty

我是n00b,所以基本上我想使用smarty从我的.tpl文件中调用我的index.php文件中的查询:

Index.php

<?php

//Database connection
$db = mysqli_connect('xx','xx','','xx')
or die('Error connecting to MySQL server.');

//access Smarty template engine
require_once('Smarty-3.1.30/libs/Smarty.class.php');

$smarty = new Smarty();
$smarty->template_dir = 'views';
$smarty->compile_dir = 'tmp';


//query product page
$query = "SELECT * FROM cs_shop";
mysqli_query($db, $query) or die('Error querying database.');

$result = mysqli_query($db, $query);
$row = mysqli_fetch_array($result);


//query
while ($row = mysqli_fetch_array($result)) {
$row['product_category'] . ' ' . $row['product_price'] . ': ' . 
$row['product_quantity'] . ' ' . $row['product_about'] .' ' 
.$row['product_color'] .'<br />';
    }

//db collect data
$smarty->assign('row', $row); 
//template
$smarty->display('index.tpl');

mysqli_close($db);
?>

我在index.php中使用的while循环是我想在我的.tpl文件中调用的,我是smarty的新手,无法让它工作,测试数据库连接并且它工作,我的,Smarty被调用没有错误。

它是一个基本的静态页面我只是在做实验,使用Smarty,所​​以我只想将查询显示为列表no td&s;或类似的东西。

所以有人可以举个例子说明我的.tpl文件在我的视图中的位置&#39;目录,如果我想显示查询?

提前致谢

2 个答案:

答案 0 :(得分:1)

如何在<p>标记中显示数组中的几个单词作为选项的简短示例:

<强>的index.php

$rows = ['hello', 'there', 'this', 'is', 'me'];
$smarty->assign('rows', $rows);
$smarty->display('index.tpl');

<强>在index.tpl

// head,css等,这里没关系

<p>
  {foreach from=$rows item="item"}
    {$item}<br>
  {/foreach}
</p>

这将产生一些评估为:

的代码
<p>
  hello<br>
  there<br>
  this<br>
  is<br>
  me<br>
</p>

解释为HTML:

hello
there
this
is
me

作为变量的内容,您可以(几乎)传递任何您想要的内容。

答案 1 :(得分:0)

让这个工作,这就是我做的。

在我的 index.php 中(仅显示我所知道的不正确且现在正确无误)

<?php
$new = ['product_category','product_price','product_quantity','product_about','product_color'];

//added an array - rows
$rows = array();

//while loop calling array adding products columns to it
while ($row = mysqli_fetch_array($result)) {
 $rows[] = array(
    'product_category' => $row['product_category'],
    'product_price' => $row['product_price'],
    'product_quantity' => $row['product_quantity'],
    'product_about' => $row['product_about'],
    'product_color' => $row['product_color']
);
}

//db collect data - calls rows
$smarty->assign('row', $rows); 
//template
$smarty->display('index.tpl');

<强>在index.tpl

 <p>
  {foreach from=$row item="item"} 

     {$item['product_category'] }<br />

  {/foreach}
 </p>
像我说的那样我完全是菜鸟,但得到它显示。谢谢@Tobias .F