我是PHP的新手并且设计了一个小博客。我正在尝试提交一个表单以创建一个新帖子,但它不起作用,我无法弄清楚原因。我将它与我的工作代码进行了比较,看起来就像寄存器一样。我没有收到任何错误,它只是重新加载页面而不是发布到数据库。
查看 - v_newpost.php
<article>
<?php
if (!isset ($_SESSION['username']))
{
?>
<span class="alert">Please login to create a post.</span>
<?php
}
else
{
?>
<form class="newpost" action="" method="post">
<fieldset>
<legend>Submit a new post</legend>
<?php if ($error['alert'] != '') { echo "<span class='alert'>".$error['alert']."</span>";} ?>
<ul>
<li>
<label for="title">Title:</label>
<input type="text" name="title" value="<?php echo $input['title']; ?>" required autofocus>
</li>
<li>
<label for="content">Content:</label>
<textarea id="content" name="content" rows=6 value="<?php echo $input['content']; ?>"></textarea>
</li>
</ul>
</fieldset>
<fieldset>
<button type="submit" class=postbutton>Publish</button>
</fieldset>
</form>
</div>
<?php
}
?>
</article>
newpost.php
<?php
require_once 'includes/connection.php';
$error['alert'] = '';
$input['title'] = '';
$input['content'] = '';
if (isset($_POST['submit']))
{
if ($_POST['title'] == '' || $_POST['content'] == '')
{
$error['alert'] = 'Please give your post a title and content.';
$input['title'] = $_POST['title'];
$input['content'] = $_POST['content'];
include_once('v_newpost.php');
}
else
{
$input['title'] = htmlentities($_POST['title'], ENT_QUOTES);
$input['content'] = htmlentities($_POST['content'], ENT_QUOTES);
if ($stmt = $mysqli->prepare("INSERT INTO posts (title, content) VALUES (?,?)"))
{
$stmt->bind_param("ss", $input['title'], $input['content']);
$stmt->execute();
$stmt->close();
$error['alert'] = '';
$input['title'] = '';
$input['content'] = '';
header('Location: index.php');
}
else
{
$error['alert'] = 'Failed to create post';
}
}
}
else
{
include_once('v_newpost.php');
}
?>
我确定这可能是愚蠢的事情,但我已经多次查看它并且无法理解为什么它不起作用......
答案 0 :(得分:1)
您必须将表单的操作设置为指向newpost.php
答案 1 :(得分:0)
您需要在表单中执行操作。尝试:
<form class="newpost" action="newpost.php" method="post">
答案 2 :(得分:0)
以下情况永远不会成立,因为您没有name="submit"
的表单元素。
if (isset($_POST['submit']))
答案 3 :(得分:0)
在newpost.php中你有 if(isset($ _ POST ['submit'])) 它不起作用,因为你没有发送任何名称提交。