我想单击一个链接,显示个性化的内容。
<div class="tab_event">
<?php
do{
echo'
<table class="preview_event">
<td class="date_event">
'.$row["Date"].'
</td>
<td class="title_event">
<p>'.$row["Title"].'<br></p>
<a href="">Read more !</a>
</td>
</table>
';
} while ($row = $query->fetch(PDO::FETCH_ASSOC));
?>
我的程序包括对数据库中的某些文章进行“预览”。 当您单击“阅读更多”时,我会自动希望您看到一个页面,其中所有文章均已撰写。 但是我对如何执行此操作没有任何想法,我不想为每篇文章手动创建页面。 有谁知道如何做吗? 谢谢
答案 0 :(得分:1)
要实现您想要的目标,您需要生成一个href
到另一个/相同的PHP驱动页面以及一个带有一些值的查询参数,该值可以唯一标识数据库中的文章。
假设您的数据库表结构类似于
| Id | Date | Title |
|----|------------|------------------------|
| 1 | 0000-00-00 | Some catchy post title |
| 2 | 0000-00-00 | Yet another post title |
| 3 | 0000-00-00 | Some other title? |
我将使用上述表结构使用$row["Id"]
<div class="tab_event">
<?php
do {
echo '
<table class="preview_event">
<td class="date_event">
'.$row["Date"].'
</td>
<td class="title_event">
<p>'.$row["Title"].'<br></p>
<a href="/showArticle.php?aid='.$row["Id"].'">Read more !</a>
</td>
</table>';
} while ($row = $query->fetch(PDO::FETCH_ASSOC));
?>
现在访问链接脚本(showArticle.php)上的aid
参数,以从databse获取文章。
<?php
if (!empty($_GET['aid']) {
// escape and verify value of `$_GET['aid']`
// fetch and return article from database using the `$_GET['aid']` parameter
} else {
// tell the user no `Id` was provided
}
?>
答案 1 :(得分:0)
这是一个非常容易的任务,首先,您需要修改表格页面,并编辑以下内容的更多链接:
<a href="read.php?article=.$row['article_id'].">Read more !</a>
在article_id
是单击链接时您想用来存储该信息的任何记录标识,例如数据库中文章的id字段,现在您创建一个read.php
页面,该页面将更改其内容。内容基于链接中文章的ID,因此您只需创建该文章,而无需为每个文章创建一页。
然后在read.php
中从URL检索该信息,以便您可以使用正确的文章ID查询数据库并显示其内容:
...
...
$article_id = $_GET['article'];
// then you query the database using that variable (using whatever method you prefer, this in just an example)
$query = $db->prepare("SELECT title, date, content FROM articles WHERE articles.id = " . $article_id);
$query->fetch(PDO::FETCH_ASSOC);
通过这种方式,您可以检索单身人士的文章信息并将其显示在read.php
页面上,仅创建一个页面,该页面会根据您单击的链接来更改其内容。
此外,值得一提的是,您应该删除do...while
,for
和foreach
循环会更优雅。
一个例子是(假设包含结果的变量称为$rows
):
<table> <!-- table tag outside of the loop, otherwise for each article a table is created, which is wrong -->
<tbody>
<?php
foreach($rows as $article) {
echo "<tr>"; // since we need one row for each article, we include the tr tag in the loop
echo "<td>".$article['title']."</td>";
echo "<td>".$article['date']."</td>";
echo "<td>".$article['author']."</td>";
...
...
echo "</tr>"; // and we close the row
}
?>
</tbody>
</table>