Php 向数据库中添加新记录可防止回显其他记录
您好,我已经创建了一个论坛网站,登录用户可以在每个论坛主题上使用表单创建主题,但是当我使用表单添加新记录时,它会阻止自己和以前的主题显示 我不知道为什么,如果有任何帮助,我将不胜感激。 我有我的论坛页面,其中显示类别、主题(如果选择了类别)和回复(如果选择了主题)。下面是我的forum.php页面的代码Php 向数据库中添加新记录可防止回显其他记录,php,mysql,sql,forum,Php,Mysql,Sql,Forum,您好,我已经创建了一个论坛网站,登录用户可以在每个论坛主题上使用表单创建主题,但是当我使用表单添加新记录时,它会阻止自己和以前的主题显示 我不知道为什么,如果有任何帮助,我将不胜感激。 我有我的论坛页面,其中显示类别、主题(如果选择了类别)和回复(如果选择了主题)。下面是我的forum.php页面的代码 <div id="midclmn"> <?php If (isset($_GET['topic'])){ // Show topic
<div id="midclmn">
<?php
If (isset($_GET['topic'])){
// Show topic & replies
$queryreply = "SELECT a.reply_id,a.reply_text, a.reply_date, b.topic_title, b.topic_date,c.username AS reply_user, (SELECT username FROM users
WHERE user_id=b.user_id) AS topic_creator FROM forum_replies a
LEFT JOIN forum_topics b ON a.topic_id=b.topic_id
LEFT JOIN users c ON a.user_id=c.user_id
WHERE a.topic_id = '".$_GET['topic']."' ";
$result = mysql_query($queryreply) or die (mysql_error());
$row = mysql_fetch_array($result);
if(empty($row['reply_id'])){
echo "No replies have been posted in this Topic, be the first to have your say using form below.";} ?>
<table id="categorytable">
<tr><td><?php echo '<b>'.$row['topic_title'].'</b>';?></b><br></td></tr>
<tr><td><?php echo 'Topic published by '.$row['topic_creator'].' - ( '.$row['topic_date'].' )'.'';?><br><br></td></tr>
<tr><td><?php $row['reply_user'].' Replied with: ';?><br></td></tr>
<tr><td><?php echo $row['reply_text'].'<br><br><i>Published: '.$row['reply_date'].' by '.$row['reply_user'].'</i>';?></td></tr>
<?php
while ($row = mysql_fetch_array($result)){ ?>
<tr><td><?php $row['reply_user'].' Replied with: ';?><br></td></tr>
<tr><td><?php echo $row['reply_text'].'<br><br><i>Published: '.$row['reply_date'].' by '.$row['reply_user'].'</i>';?></td></tr>
<?php
}
?>
</table>
<?php
}elseif (isset($_GET['cat'])){
// Show topics in that category
$querytopic = "SELECT topic_id, topic_title,topic_description, topic_date, category_id FROM forum_topics WHERE category_id = '".$_GET['cat']."'";
$result = mysql_query($querytopic) or die (mysql_error());
$row = mysql_fetch_array($result);
if(empty($row['topic_id'])){
echo "No topics have been posted in this category, be the first to submit a topic using form below."; ?>
<table id="categorytable">
<tr><td><?php echo '<a href="forum.php?topic='.$row['topic_id'].'&cat='.$row['category_id'].'"><b>'.$row['topic_title'].'</b></a>';?></td></tr>
<tr><td><?php echo $row['topic_description'];?><br><br></td></tr>
<tr><td><?php echo "<b>Date Posted:</b> ".$row['topic_date'];?><br><br></td></tr>
<?php
while ($row = mysql_fetch_array($result)){ ?>
<tr><td><?php echo '<a href="forum.php?topic='.$row['topic_id'].'&cat='.$row['category_id'].'"><br>'.$row['topic_title'].'</b></a>';?></td></tr>
<tr><td><?php echo $row['topic_description'];?><br><br></td></tr>
<tr><td><?php echo "<b>Date Posted:</b> ".$row['topic_date'];?><br><br></td></tr>
<?php
}} ?></table><?php
if($_SESSION['loggedin'] === true){
$userid = $_SESSION['id'];
$catid = $_GET['cat'];
?>
<br>
<form method="post" action="topic_process.php" id="topicform">
<h3>Add New Topic</h3>
<input type="hidden" id="catid" name="catid" value=<?php echo $catid?> >
<input type="hidden" id="userid" name="userid" value=<?php echo $userid ?>>
<label for="topictitle">Topic Title: </label>
<textarea rows="2" cols="80" id="topictitle" name="topictitle" required ></textarea>
<br><br>
<label for="topicdescription">Topic Description: </label>
<textarea rows="10" cols="80" id="topicdescription" name="topicdescription" required ></textarea>
<input type= "hidden" id="topicdate" name="topicdate" value=<?php echo ''.date('Y-m-d').'' ?>>
<br><br>
<input type="submit" name="topicsubmit" id="topicsubmit" value="Create Topic">
</form>
<?php
}
?>
<?php
}else{
//Just display the list of categories
$querycategory = "SELECT category_id, category_title,category_description FROM forum_category";
$result = mysql_query($querycategory) or die (mysql_error());
$row = mysql_fetch_array($result); ?>
<table id="categorytable">
<tr><td><?php echo '<a href="forum.php?cat='.$row['category_id'].'">'.$row['category_title'].'</a>';?></td></tr>
<tr><td><?php echo $row['category_description'];?><br><br></td></tr>
<?php
while ($row = mysql_fetch_array($result)){ ?>
<tr><td><?php echo '<a href="forum.php?cat='.$row['category_id'].'">'.$row['category_title'].'</a>';?></td></tr>
<tr><td><?php echo $row['category_description'];?><br><br></td></tr>
<?php
}
?>
</table>
<?php }
?>
</div>
session_start();
include "includes/connection.php";
echo $_POST['topictitle'];
echo $_POST['topicdescription'];
echo $_POST['userid'];
echo $_POST['catid'];
$query = "INSERT INTO forum_topics
(
category_id,
user_id,
topic_title,
topic_description,
topic_date
)
VALUES
(
'".$_POST['catid']."',
'".$_POST['userid']."',
'".$_POST['topictitle']."',
'".$_POST['topicdescription']."',
'".$_POST['topicdate']."'
)";
mysql_query($query) or die (mysql_error());
header('Location: /TEST/forum.php?'.$_POST['catid'].'');
?>
我也在努力将主题日期记录为我在2015年4月28日尝试的日期(“Y-m-d”),但它保存为00-00-00
我知道有很多代码需要阅读,但我真的被卡住了,不想错过任何东西,我还知道mysql_函数已经被弃用,但uni已经要求使用它们
我使用PHPmyadmin作为数据库,我知道这是垃圾!
谢谢
编辑:我已设置页面,使其显示数据库中存储的所有主题(主题标题、主题描述、用户id、主题日期)。在我向数据库添加一个新主题之前,这很好,但之后所有主题(包括新主题)都消失了,只留下页面上的表单。所有记录仍存在于数据库中,删除新记录会返回页面上显示的所有主题。您是否可以展开“它会阻止自身和以前的主题显示”。您实际观察到了什么情况?你希望观察到什么?想象一下,你正在和一个从未见过或听说过你的网站,却不知道它在做什么的人交谈。。。因为那是我们:)对不起,我的不好,基本上在我使用表单添加新主题之前。该网站在一个整洁的表格中显示所有主题(标题、主题描述、用户创建者和发布日期),但在我使用表单添加新主题后,网页上不会显示任何主题(仅显示表单)。所有记录仍然存在于数据库中,尽管(1)phpMyAdmin不是数据库,MySQL是。phpMyAdmin与您发布的代码无关。(2) 由于您的uni,您可能必须使用
mysql\uuu
,但至少要清理数据。(3) 如果您的topic\u date
是一个日期列,则它不可能像0000-00-00
那样保存为00-00
。不要试图构建自己的日期,只需使用MySQL的NOW()
填充字段即可。(4) 看起来您的位置标题('location:/TEST/forum.php?cat='.$\u POST['catid'.')中缺少cat=
)
主题日期设置为date,我将插入值更改为NOW(),但仍然得到了00-00-00,因此不确定问题出在哪里。cat=think很有效,谢谢你,但我试图解决的主要问题是,为什么这些记录阻止我的主题像新记录不存在时那样显示
session_start();
include "includes/connection.php";
echo $_POST['topictitle'];
echo $_POST['topicdescription'];
echo $_POST['userid'];
echo $_POST['catid'];
$query = "INSERT INTO forum_topics
(
category_id,
user_id,
topic_title,
topic_description,
topic_date
)
VALUES
(
'".$_POST['catid']."',
'".$_POST['userid']."',
'".$_POST['topictitle']."',
'".$_POST['topicdescription']."',
'".$_POST['topicdate']."'
)";
mysql_query($query) or die (mysql_error());
header('Location: /TEST/forum.php?'.$_POST['catid'].'');
?>