Форма не публикуется в базе данных - PHP - PullRequest
0 голосов
/ 12 января 2012

Я довольно новичок в 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');
}


?>

Я уверен, что это, вероятно, что-то глупое, но я просмотрел его так многораз и не могу понять, почему это не работает ...

Ответы [ 4 ]

1 голос
/ 12 января 2012

Вам нужно будет настроить действие формы так, чтобы оно указывало на newpost.php

0 голосов
/ 12 января 2012

В newpost.php у вас есть if (isset ($ _ POST ['submit'])) Это не будет работать, потому что вы ничего не отправляете с именем submit.

0 голосов
/ 12 января 2012

Следующее никогда не будет верным, поскольку у вас нет элемента формы с name="submit".

if (isset($_POST['submit']))
0 голосов
/ 12 января 2012

Вам нужно действие в вашей форме.Попробуйте:

<form class="newpost" action="newpost.php" method="post">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...