2012-01-12 2 views
0

Я довольно новичок в PHP и разрабатываю небольшой блог. Я пытаюсь представить форму для создания нового сообщения, но он не работает, и я не могу понять, почему. Я сравнил его с моим рабочим кодом для формы регистра, и это похоже на то же самое. Я не получаю никаких ошибок, это просто перезагрузка страницы, а не публикация в базе данных.Форма не публиковать в базе данных - PHP

View - 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'); 
} 


?> 

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

+1

Форма действия пуста! –

+0

На самом деле это не проблема, так как форма возвращается на ту же страницу, если она оставлена ​​пустой. Я не дал моей кнопке отправки имя, как указал грин. – paulyay

ответ

0

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

if (isset($_POST['submit'])) 
+0

Отлично, спасибо. Я читал 'button type = "submit" и не понимал, что не назвал его. Ура! – paulyay

+0

приветствую друга. – greut

1

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

+1

Никакие действия не означают, что форма будет отправлена ​​на ту же страницу. – greut

0

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

<form class="newpost" action="newpost.php" method="post"> 
0

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