php - Url() 基于产品选择

标签 php mysql get smarty template-engine

所以我对 php、Smarty 和 mysql 都很陌生。我只是想知道解决以下问题的最佳方法:

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

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

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

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

如何(请指导)

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

我想从产品属性中生成一个可以从数据库表中检索的 URL?这可能吗?也许有一个链接可以阅读这方面的内容吗?

我是否必须在数据库中为我生成的 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 中的产品 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);

?>

关于php - Url() 基于产品选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44018680/

相关文章:

php - 如何使用搜索功能显示具有最接近的 long/lat 值的商店 - Laravel 5 eloquent

php - 如何从 channel 链接中获取 YouTube channel 标识符? - PHP

php - 如何在mysql中选择两行并通过获取id查看

javascript - knockout 数据绑定(bind)点击

php - 如何通过 PHP 恢复可变长度的 GET 变量?

javascript - 使用 Ajax 和 jQuery 显示新数据

php - 如何根据购物车中的产品数组或类别隐藏 DIV?

mysql - 如何在 Eloquent laravel 中使用别名编写 SQL 查询?

c# - 如何用另一个表/列表中的匹配值替换 id?

php - jquery ajax 到 mysql 到 php 到 javascript 的转换