我正在为自己制作一个论坛,看看一切是如何运作的。它在PHP(PDO)中构建,现在我遇到了问题。我无法弄清楚当有人点击board
中的某条记录时,我会确定如何只显示topic_id
设置为board
的项目
这是主题数据库
这是董事会数据库
代码也显示了董事会:
<section class="col-md-8 connectedSortable">
<div class="box box-info">
<div class="panel panel-default">
<div class="panel-heading main-color-bg">
<h3 class="panel-title">Boards</h3>
</div>
<div class="panel-body">
<?php
$boardss = $app->get_boards();
foreach($boardss as $board){
echo '<div class="col-md-6">';
echo '<div class="well dash-box">';
echo '<h3>'.$board['topic'].'</h3><br>';
echo '<a href="https://####/boards/topics">' .$board['omschrijving'].'</a>';
echo '</div>';
echo '</div>';
}
?>
</div>
</div>
</div><!-- /.box -->
</section><!-- right col -->
我使用的功能:
public function get_boards(){
$getBoards = $this->database->query("SELECT * FROM boards ORDER BY id DESC");
$boards = $this->database->resultset();
return $boards;
}
public function get_topics(){
$getTopic = $this->database->query("
SELECT topics.*, klanten.foto, klanten.voornaam, klanten.achternaam FROM topics
LEFT JOIN klanten ON topics.klant_id=klanten.id
ORDER BY id ASC");
$topics = $this->database->resultset();
return $topics;
}
答案 0 :(得分:1)
生成指向电路板页面的链接时,需要指定实际调用的电路板。您当前的代码如下所示:
echo '<a href="https://####/boards/topics">' . $board['omschrijving'] . '</a>
如您所见,href
属性中的调用本身不包含任何信息。相反,你应该在那里添加董事会的主键:
echo '<a href="https://####/boards/topics?board=' . $board['id'] . '">' . $board['omschrijving'].'</a>
如果这样做,您可以通过$_GET
:
$currentBoard = $_GET['board'];
if (!is_numeric($currentBoard)) {
die('Not a valid board id');
}
$currentBoard = (int)$currentBoard;
通过该信息,您可以通过将其添加到get_topics()
中的查询并将该板添加为该函数的参数来指定该板的主题。 (get_topics($currentBoard)
)
SELECT
topics.*,
klanten.foto,
klanten.voornaam,
klanten.achternaam
FROM
topics
LEFT JOIN klanten ON topics.klant_id=klanten.id
WHERE
topics.board_id = :board
ORDER BY id ASC
该语句使用参数:board
,您可以在a prepared statement中使用变量$currentBoard
替换该参数。在这种情况下,我强烈建议您使用准备好的陈述。
答案 1 :(得分:0)
将参数$board_id
添加到get_topics()
,然后为传递的WHERE
添加$board_id
子句,以便仅提取该主板的主题。
更新功能
public function get_topics($board_id){
$getTopic = $this->database->query("
SELECT topics.*, klanten.foto, klanten.voornaam, klanten.achternaam FROM topics
LEFT JOIN klanten ON topics.klant_id=klanten.id
WHERE topics.board_id = '$board_id'
ORDER BY id ASC");
$topics = $this->database->resultset();
return $topics;
}