我正在为我的移动网站(FOUND HERE)
创建一个网站目录我已经想出如何从我的表promo_cat列表中将我的mysql表中的列表显示到我的主页。
我遇到麻烦的是这个:
点击其中一个类别后,它会将我引导至list.php页面。
如何让此页面显示与点击的类别相关的结果,而不显示其他结果?
例如:点击“免费”时会显示此页面: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();
}
}
?>
答案 0 :(得分: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中,看看你是否得到了正确的结果。
答案 1 :(得分: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'])
希望有所帮助!