Url() 根据产品选择

Url() based on product selection

所以我是 php、Smarty 和 mysql 的新手。我只想知道处理以下问题的最佳方法:

(ill show you my code but since i just want experienced guidance im keeping it short)

我需要实现的目标:我有一个产品列表页面,在列表中显示了我的 3 个产品。此列表填充在我的 .tpl 文件中。我的数据库连接和查询从 .php 文件中读取。

现在,每当我点击一个产品时,我想生成一个新的(产品详细信息)url 并仅显示具有该产品属性的该产品。

我想知道如何解决这个问题,我想我只会为产品详细信息页面创建一个新的 .tpl 文件。当您单击产品列表页面上的 link(产品) 时,它会将您重定向到仅该产品的产品详细信息页面。

如何(请指导)

那么为每个产品生成 url 的最佳方式是什么? (在新的 .tpl 中仅显示所选产品及其详细信息)。

我想从可以从数据库 table 中检索的产品属性中生成一个 url?这可能吗,也许有 link 来阅读这方面的内容?

我是否必须在我的数据库中为我生成的 url() 创建一个列?

任何帮助都将非常有用!

My CODE : i have not set up an .tpl for product-details page

.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>

创建一个将显示产品详细信息 product.phpproduct.tpl 的页面,并根据 href 到 link 将产品 ID 用于不同的产品 product_id.

<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

获取产品 ID
<?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);

?>