1

我正在为我的移动网站创建一个网站目录(在这里找到

我已经想出了如何从我的表 promo_cat 列表中将我的 mysql 表中的列表显示到我的主页。

我遇到的问题是:

一旦单击其中一个类别,它就会将我带到我的 list.php 页面。

我如何让这个页面显示与点击的类别相关的结果,而不是其他?

例如:当点击“FREE”时会弹出这个页面:http ://www.xclo.mobi/xclo2/list.php?id=FREE 。显示所有结果。它应该只显示具有 promo_cat 字段为“FREE”的结果,并且不应像当前那样显示任何其他结果。

我的 list.php 代码:

<?php

include_once('include/connection.php');
include_once('include/article.php');

$article = new article;
$articles = $article->fetch_all();

?>

<html>

<head>
<title>xclo mobi</title>
<link rel="stylesheet" href="other.css" />
</head>

<body>
<?php include_once('header.html'); ?>


<div class="container">
<a href="index.php" id="logo">Category = ???</a>

<ol>
    <?php foreach ($articles as $article) { ?>

<div class="border">
<a href="single.php?id=<?php echo $article['promo_title']; ?>" style="text-decoration: none">
<img src="<?php echo $article['promo_image']; ?>" border="0" class="img" align="left"><br />


<a href="<?php echo $data['promo_link']; ?>" target="_blank"><img alt="" title="" src="GO.png" height="50" width="50" align="right" /></a>

          <font class="title"><em><center><?php echo $article['promo_title']; ?></center></em></font>

<br /><br />

<font class="content"><em><center><?php echo $article['promo_content']; ?></center></em></font>

</div><br/><br />

          </a>

 <?php } ?>
</ol>
</div>
</body>

</html>

/include/article.php

<?php

class article {
public function fetch_all(){
    global $pdo;
      $query = $pdo->prepare("SELECT * FROM mobi");
      $query->execute();
return $query->fetchAll();
              }

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

 $query = $pdo->prepare("SELECT * FROM mobi WHERE promo_title = ?");
  $query->bindValue(1, $promo_title);
   $query->execute();

return $query->fetch(); 

}

}

?>
4

2 回答 2

1

您需要根据通过 GET 参数获得的输入来更改 list.php 的代码。就像是:

if ($_GET['id'] == 'FREE'){
    // do something like display FREE items
}
elseif($_GET['id'] == 'GIFT') {
    // display GIFT items
}
else {
    // perform some default action 
}

这是为了使它更加数据库驱动(当有很多类别时很有帮助):

$sql = "select * from categories where id = '".$_GET['id']."'";
if (mysql_results($sql)){
    // do something
}
else {
    // show error
}

请注意,这仅用于演示,在您的代码中您应该使用 PDO/MySQLI 和准备好的语句,而不是 mysql_results 函数。

根据OP提供的更多信息:更改此

$articles = $article->fetch_all();

$articles = $article->fetch_data($_GET['id']);

在 list.php 中,看看你是否得到正确的结果。

于 2013-07-19T17:01:35.197 回答
0

根据您提供的代码,试试这个:

<?php foreach ($articles as $article) { 
   if ($article['promo_cat'] === 'FREE') { ?>

   // Keep the rest of the code

   //instead of <?php } ?> - put...
   <?php } } ?>

请记住,这很混乱。但是该foreach声明(我想)被用来打印所有帖子。因此,在打印出帖子之前,您只需检查 promo_title 是否为 FREE、GIFT 等。如果不是,则不会打印该项目。

您可以通过传入带有当前促销标题的 $_GET 变量(您显然正在这样做,但代码从不使用此变量)并更改条件行来使其更具动态性

if ($article['promo_cat'] === $_GET['id'])

希望有帮助!

于 2013-07-19T17:07:16.720 回答