2012-01-12 11 views
0

私はかなりPHPを使い始め、小さなブログをデザインしています。私は新しい投稿を作成するフォームを提出しようとしているが、それは動作していないと私は理由を把握することはできません。私はそれを登録フォームのための私の作業コードと比較しました、そして、それは同じようです。私は何のエラーも出ていない、それは単にページを再読み込みし、データベースに投稿していない。フォームがデータベースにポストされていません - 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'); 
} 


?> 

v_newpost.php私はそれはおそらく愚かなものだと確信していますが、私はそれの上に何度も見てきたと理解することはできませんなぜ機能していないのですか?

+1

フォームアクションは空です! –

+0

これは、空白のままにした場合、フォームが同じページにポストバックするため、実際は問題ではありませんでした。私は送信ボタンに名前を指摘していませんでした。 – paulyay

答えて

0

name="submit"のフォーム要素がないため、次のことは起こりません。 newpost.phpで

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

あなたが提出した名前では何も送信しないので、それは動作しませんよ(ISSET($ _ POST [ '提出'])) 場合は を持っています。

関連する問題