我正在做一个学校项目,正在创建一个简单的留言簿。(我是初学者(我被困在如何将两个id相互关联上。我有两个不同的数据库表,一个称为留言簿,用于存储帖子,另一个称为成员,用于存储注册成员。
现在我需要做的是将PostID与UserID相关联,以便您可以看到谁写了哪个帖子。现在,当一个成员登录时,它说所有帖子都是由该用户写的,如果我用另一个用户登录,它说该用户已经写了所有帖子。
这是我的主页.php文件的代码,其中包含留言簿,我还有一个留言簿用户验证文件,如果您需要,我可以发布该文件?
<?php
session_start();
$username = $_SESSION['username'];
if($_SESSION['login'] == 1) //om sessionen är 1 så
{
echo "<h1>Välkommen till gästboken $username</h1>";
// Connect to the database
mysql_connect("localhost", "root", "");
mysql_select_db("guestbookdatabase");
//******************************************************************//
//Form and add stuff
echo "<h2>Posta till Gästboken</h2>
<form action='home.php' method='post'>
<table>
<tr>
<td>Titel:</td>
<td><input type='text' name='titel' style='width: 300px;'</td>
</tr>
<tr>
<td>Inlägg:</td>
<td><textarea name='inlägg' style='width: 300px; height: 100px;'></textarea></td>
</tr>
<tr>
<td></td>
<td><input type='submit' name='postknapp' value='Posta'</td>
</tr>
</table>
</form>";
//******************************************************************//
//Display stuff
echo "<h2>Nuvarande Poster</h2>";
if ($_POST['postknapp']) {
$title = strip_tags($_POST['titel']);
$message = strip_tags($_POST['inlägg']);
if ($title && $message) {
//Lägg till i databasen
mysql_query("INSERT INTO guestbook (Title,Post) VALUES ('$title','$message')");
echo "Ditt inlägg har lagts till i gästboken!";
}
else
echo "Du har inte fyllt i nödvändig information för att kunna göra ett inlägg.";
}
$query = mysql_query("SELECT * FROM guestbook ORDER BY PostID DESC");
$sql = mysql_query("SELECT * FROM members WHERE Username = $username");
$numrows = mysql_num_rows($query);
if ($numrows > 0){
while ( $row = mysql_fetch_assoc($query) ) {
$id = $row['PostID'];
$name = $sql;
$title = $row['Title'];
$message = $row['Post'];
$date = $row['Timestamp'];
$message = nl2br($message);
echo "<div>
Av <b>$name</b> vid <b>$date</b><br />
<h2>$title</h2> <p>
$message
</div> <hr />";
}
}
else
echo "Inga inlägg hittades.";
//*****************************************************************//
mysql_close();
?>
<a href="logga_ut.php">Logga ut</a>
<?php
}
else // om session inte är 1 så
{
echo "Du har INTE tillåtelse till gästboken! Klicka på länken för att logga in!";
?>
<p>
<br/><a href="index.html">Till login >></a>
<?php
}
?>
几点。如果你为学校项目这样做,我绝对不会使用mysql_*
函数。 这些已被弃用,如果我正在评分,您将自动失败使用它们。我建议查看mysqli_*
与mysql_*
对应项类似的功能。
其次,您没有采取任何措施来防止SQL注入。 同样,如果我给你评分,我会让你失望,因为你只是破坏了数据库。
最后,您要做的是在查询中使用 JOIN 条件。 我对你的表结构不够了解,所以你可能需要调整这个例子:
SELECT *
FROM guestbook
INNER JOIN members ON members.MemberID = guestbook.MemberID <-- use whatever your member id fileds are in the two tables here
WHERE members.Username = ?
ORDER BY guestbook.PostID DESC
确定
-
在查询中生成要添加的消息
WHERE id = '$userid'
以便仅为该用户生成消息。- 考虑您是否不熟悉
MYSQL
更改为PDO
或MYSQLI
,
- 考虑您是否不熟悉
在数据库中,Members
表应包含以下两列:
- 编号
- 名称(如果您愿意,可以将其分解为名字和姓氏的 2 列(
然后在Messages
表中,您需要具有:
- 编号
- 会员编号
- 消息
当成员发布消息时,您需要将此成员的 ID 与消息一起存储在消息表中。
然后,您可以按成员 ID 轻松过滤邮件。您的查询将如下所示:
SELECT Members.name, Messages.message FROM Members JOIN Messages WHERE Messages.memberId = Member.id ORDER BY PostID DESC