【问题标题】:Generate URL for specific category为特定类别生成 URL
【发布时间】:2019-09-19 09:26:21
【问题描述】:

我需要根据产品类别修改 URL。所以在数据库示例中:类别名称是NIKE,子类别是AIR-MAX,所以这个URL 是site.com/en/products/nike/air-max/product.php?id=1。所以我需要生成/nike/air-max/ 如果在数据库列中category/nike/air-max/ 否则如果在数据库列中是另一个类别示例:reebok 以显示/reebok/ url。我认为这可以通过echo function 完成。

class Main {
        public function get_all_posts(){
        global $pdo;

        $query = $pdo->prepare('SELECT * FROM post WHERE categoryProduct="Nike Air-Max" ORDER BY post_id DESC');
        $query->execute();

        return $query->fetchAll(PDO::FETCH_ASSOC);
    }

    public function fetch_data($pid){
        global $pdo;

       $query = $pdo->prepare('SELECT * FROM post where post_id = ? order by post_date desc');
        $query->BindValue(1,$pid);
        $query->execute();

        return $query->fetch();
    }
}

如果categoryProductNike Air-Max 值或categoryProductreebook 回显/reebook/,我需要echo "/nike/air-max/";,这样我就可以在索引页面上回显到<a href="/en/product/<?php echo $post['URL']; ?>/product.php?id=<?php echo $post['post_id']; ?>">See product information</a>

【问题讨论】:

  • 您需要使用.htaccess 来重写您的网址。
  • 在 .htaccess 中?怎么有教程或者?我对 .htaccess @Script47 不满意
  • 我认为 htaccess 不会解决这个问题,PHP 是解决方案。因为我需要从数据库而不是手动创建category/sub-category/。 @Script47
  • 如果类别是 nike/air-max,我从数据库列类别中检索,则在 url 中回显 nike/air-max。 @Script47
  • 您的网站上没有这样的文件,例如/en/products/nike/air-max/product.php?id=1。因此,您将 必须 使用 mod_rewrite 规则(php 用户错误地调用 .htaccess)来访问您新创建的 url。但这是一个完全不同的故事

标签: php sql pdo


【解决方案1】:

首先你必须在BD中划分类别和子类别;所以你必须创建两个单独的表:一个用于类别,另一个包含子类别名称和类别引用。

完成后,您可以简单地检索所有类别,然后 foreach 类别检索子类别并显示名称:

foreach ($result as $category) {
   foreach (retriveAllProdsFromCat($category) as $subCategory) {
       echo "<a href='site.com/en/products/$catgory/$subCategory/product.php?id=1'>$subCategory</a>";
   }
}

这样你必须为每个类别和每个子类别创建一个目录;如果这是最好的解决方案,那么我想知道;但这是做复合链接的正确方法

function retriveAllProdsFromCat($category) {
    global $pdo;
    $query = $pdo->prepare('SELECT name FROM subcategory WHERE category=? ORDER BY post_id DESC');
    $query->bind_param('d', $category);
    $query->execute();

    return $query->fetchAll(PDO::FETCH_ASSOC);
}

【讨论】:

  • 你当然必须改变一些东西,但想法是这样的!
  • 想法是这样,但功能不正确,因为我需要从数据库列 `` Nike - Air Max`` 到 nike/air-max/ 生成,而使用该代码我不能这样做,因为在我的检索表单中我已经使用了&lt;?php foreach($posts as $post){?&gt;
  • 您在答案中使用 MySQLi,而 OP 使用 PDO
猜你喜欢
  • 2020-08-18
  • 1970-01-01
  • 2020-05-19
  • 2011-11-05
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多