我的表单添加到我的数据库时遇到问题。
我已经制作了表单和脚本但是在实现它们时遇到了麻烦。有什么想法吗?
表:
以下是HTML表单:
<form method="post" id="form2" action="home.php?id=<?php echo "$user_id";?>"> </br>
<h2>What would you like to ask? Rant away!</h2>
<input type="text" name="title" placeholder="Write a title" size="92px"/>
<textarea cols= "70px" rows="6px" name="content";>Description...</textarea><br/>
<select name="topic">
<option> Select Topic</option>
<?php getTopics() ;?>
</select>
<input type="submit" name ="submitbtn" value="Post to Timeline"/>
</form>
<?php
insert_post();?>
这是函数 - 函数所在的文件,使用文件顶部的include命令包含在HTML文件中。
function insert_post(){
if(isset($_POST['submitbtn'])){
global $con;
$title=$_POST['title'];
$content=$_POST['content'];
$topic=$_POST['topic'];
$insert="INSERT INTO `posts` ( `user_id`, `topic_id`, `post_title`, `post_content`, `post_date`)
VALUES ('$user_id','$topic','$title','$content',NOW()) ";
$run=mysqli_query($con, $insert);
if($run){
echo"<h3>Discussion posted</h3>";
}
}
}
编辑: 作为参考,单击提交时得到的错误是404,表示“找不到对象”。
编辑2:
表格图像显示该行称为pos_title
,而我自己的代码则显示post_title
。当编辑代码说pos_title
时,仍然会出现同样的错误。
编辑3: 实施一些建议的更改后出现新错误:
答案 0 :(得分:0)
$insert="INSERT INTO `posts` ( `user_id`, `topic_id`, `post_title`, `post_content`, `post_date`)
VALUES ('" . $user_id . "','" . $topic . "','" . $title . "','" . $content . "',NOW()) ";
试试这段代码。您应该使用.
连接而不是在字符串中插入变量:
$run=mysqli_query($con, $insert);
if($run) {
echo"<h3>Discussion posted</h3>";
} else {
echo mysqli_error($con);
}
注意:
出于调试目的,您应该检查mysqli_error($con);
是否有错误。
<form method="post" id="form2" action="home.php?id=<?php echo $user_id;?>"> </br>
当您回显变量时,不需要双引号。它是一个不是字符串的变量。
<textarea cols= "70px" rows="6px" name="content">Description...</textarea><br/>
你name="content"
之后的分号也不应该存在。
答案 1 :(得分:0)
从函数中删除if(isset($_POST['submitbtn'])){
并将其添加到表单上方:
if(isset($_POST['submitbtn'])){
insert_post();
}
答案 2 :(得分:0)
action="home.php"
。将此代码添加到表单中:
<input value="<?php echo $user_id?>" type="hidden" name="user_id">
将此代码添加到insert_post
功能:
$user_id = (int)$_POST['user_id'];
将post_title
替换为pos_title
或更改您的表格。
您不需要'$user_id'
,'$topic'
中的引号,但MySQL仍会接受它。
答案 3 :(得分:0)
我要感谢大家的时间,精力和帮助。事实证明,在上一个表单中出现了比此表单大约400行的语法错误,在关闭它时我错了。所以我问的问题对你来说是无法解决的,因为事实证明共享的代码或多或少都没有问题。对于我的错误人员,我们非常抱歉,非常感谢你的帮助。这肯定教会我清理我的html文件,而不是让它们变得如此之大!