所以我是php,Smarty和mysql的新手。我想知道解决以下问题的最佳方法:
(生病告诉你我的代码,但因为我只想要经验丰富的指导 保持简短)
我需要实现的目标:我有一个产品列表页面,在列表中显示我的3个产品。此列表填充在我的.tpl
文件中。我的数据库连接和查询从.php
文件中读取。
现在,当我点击某个产品时,我想生成一个新的(产品详细信息)网址,并仅显示仅包含此产品属性的产品。
我想知道如何处理这个问题,我想我只会为产品详情页面创建一个新的.tpl
文件。当您点击产品列表页面上的链接(产品)时,它会将您重定向到该产品的产品详细信息页面。
如何(请指导)
那么为每种产品生成网址的最佳方法是什么? (仅在新的.tpl中显示所选产品及其详细信息)。
我想从可以从数据库表中检索的产品属性生成一个url?这是可能的,可能有一个链接来阅读这个?
我是否必须在数据库中为我生成的url()创建一个列?
对此的任何帮助都会很棒!
我的代码:我还没有为产品详细信息页面设置.tpl
.PHP
<?php
$new = ['product_id','product_category','product_price','product_quantity','product_about','product_color'];
//Database connection
$db = mysqli_connect('xxx','xxx','xxx','xxx')
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);
//query an array of products
$rows = array();
//loop start
while ($row = mysqli_fetch_array($result)) {
$rows[] = array(
'product_id' => $row['product_id'],
'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
$smarty->assign('row', $rows);
//template
$smarty->display('index.tpl');
mysqli_close($db);
?>
.tpl (这是显示产品列表的循环)
<div class="test divider">
{section name=prod loop=$row}
<div class="colm3">
<div class="col3 r1">
<div class="products-container">
<h5>{$row[prod].product_name}</h5>
<a class="producy_img_link" href="#" >
<img src="{$row[prod].prod_img}" style="width:auto; height:255px;">
</a>
</div>
</div>
<a href="#">
<div class="block-right">
<h6>{$row[prod].product_vintage}</h6>
<h5>{$row[prod].product_veriatel}</h5>
<div>
<span class="price">R {$row[prod].product_price}</span>
</div>
</div>
</a>
</div>
{/section}
</div>
答案 0 :(得分:1)
创建一个显示产品详细信息product.php
和product.tpl
的页面,并使用href
中的产品ID链接到基于product_id
的其他产品。< / p>
<div class="test divider">
{section name=prod loop=$row}
<div class="colm3">
<div class="col3 r1">
<div class="products-container">
<h5>{$row[prod].product_name}</h5>
<!-- create a link for each product based on the product id -->
<a class="producy_img_link" href="product.php?prod_id={$row[prod].product_id}" >
<img src="{$row[prod].prod_img}" style="width:auto; height:255px;">
</a>
</div>
</div>
<a href="#">
<div class="block-right">
<h6>{$row[prod].product_vintage}</h6>
<h5>{$row[prod].product_veriatel}</h5>
<div>
<span class="price">R {$row[prod].product_price}</span>
</div>
</div>
</a>
</div>
{/section}
</div>
然后在PHP
中使用$_GET
<?php
// Database connection
$db = mysqli_connect('xxx', 'xxx', 'xxx', 'xxx')
or die('Error connecting to MySQL server.');
$product_id = $_GET['prod_id']; // gets the product id
$sql = "SELECT * FROM cs_shop WHERE product_id = $product_id";
$result = mysqli_query($db, $sql);
//query an array of products
$rows = array();
//loop start
while ($row = mysqli_fetch_array($result)) {
$rows[] = array(
'product_id' => $row['product_id'],
'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
$smarty->assign('row', $rows);
//template
$smarty->display('product.tpl');
mysqli_close($db);
?>