Php 基于产品选择的Url()

Php 基于产品选择的Url(),php,mysql,get,smarty,template-engine,Php,Mysql,Get,Smarty,Template Engine,所以我是php、Smarty和mysql的新手。我只想知道实现以下目标的最佳方法: (我会给你看我的代码,但因为我只需要有经验的指导 (保持简短) 我需要实现的是:我有一个产品列表页面,在列表中显示我的3种产品。此列表填充在我的.tpl文件中。我的数据库连接和查询从.php文件读取 现在,每当我点击一个产品时,我都想生成一个新的(产品详细信息)url,并只显示该产品和该产品的属性 我想知道如何处理这个问题,我想我只为产品详细信息页面创建一个新的.tpl文件。当您单击产品列表页面上的链接(产品)时

所以我是php、Smarty和mysql的新手。我只想知道实现以下目标的最佳方法:

(我会给你看我的代码,但因为我只需要有经验的指导 (保持简短)

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

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

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

如何操作(请提供指导)

那么,为每个产品生成url的最佳方式是什么呢?(仅在新的.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(这是用于显示产品列表的循环)


{section name=prod loop=$row}
{$row[prod].product_name}
{/section}

创建一个页面,显示产品详细信息
product.php
product.tpl
,并使用
href
中的产品id根据
产品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>

非常感谢!!我已经完成了,但很高兴看到我用的是正确的方式!谢谢你,伙计!我唯一的区别是$\u-get-->$productId=(isset($\u-get[“product\u-id]”)和&&is-numeric($\u-get[“product\u-id]”)和&(int)$\u-get[“product\u-id”]>0)?(int)$_GET["product_id]]:0 ;;是的,最好总是检查你的价值观。看一看,这将有助于防止sql注入我仍在学习过程中,所以我知道我必须在某个时候查看sql注入,但感谢它是一个非常好的范围,我也将尝试。你是否可以检查我将要问的一个新问题?回到我的编码学习曲线。。。非常感谢@2by2
<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

// 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);

?>