2015-04-22 55 views
2

試圖找出如何將新帖子提交到已經使用mysql數據庫中的數據條目創建的先前存在的表。我希望它能夠測試請求是否來自POST,如果是,則將新行插入數據庫並在表中顯示新數據。這是我到目前爲止提出的,但提交後,似乎沒有發生,我的表消失。任何幫助是極大的讚賞。PHP將數據提交到同一頁上的表

這是我到目前爲止有:

 $result = mysqli_query($dbconnect, $query); 
      $num_rows = mysqli_num_rows($result); 
     } 
     if ($num_rows > 0) // build a table to show results 
     { 
     echo "<table border='1'>"; 
     echo "<tr>"; 
     echo "<th>Post ID </th>"; echo "<th>Author</th>"; 
     echo "<th>Title</th>"; echo "<th>Post</th>"; 
     echo "</tr>"; 

    while($row = mysqli_fetch_array($result)) 
     { 
     echo "<tr>"; 
     echo "<td>" . $row['pid'] . "</td>"; 
     echo "<td>" . $row['author'] . "</td>"; 
     echo "<td>" . $row['title'] . "</td>"; 
     echo "<td>" . $row['post'] . "</td>"; 
     echo "</tr>"; 
     } 
     echo "</table>"; 
    } else{ 
     echo "No rows returned."; 
    } 
    ?> 

<form name ="myForm" action ="second.php<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" 
     method = "POST"> <br><br><br> 

    <h3> Create a Post </h3> 

    Author <input type ="text" size ="40" name ="author"/><br> 
    Title <input type ="text" size ="30" name ="title"/><br><br> 
    Post <br><textarea rows ="15" cols ="10" name ="post"></textarea><br> 
    <input type ="submit" name = "submitpost" value ="Submit Post"/> 
    </form> 
    <?php 


    // $sql = "INSERT INTO blog_posts (pid, author, title, post) 
     VALUES (NULL, '$_POST[author]', '$_POST[title]', '$_POST[post]')"; 

    //if($_SERVER['REQUEST_METHOD'] === 'POST'){ 
    //if(isset($_POST['submitpost'])){ 

    //post the $sql back into the exisiting table somehow 
    ?> 
+0

你確實有匹配的右大括號'如果($ _ SERVER [ 'REQUEST_METHOD'] === 'POST'){ 如果(isset($ _ POST [ 'submitpost'])){'?如果沒有,那就是你的問題。錯誤報告應該向你發出通知。另外,沒有關閉''標籤。你的問題不清楚,你的代碼是不安全的。 –

+0

我把這兩個代碼部分放在一起,就像我知道他們必須在那裏一樣,只是不知道該怎麼處理它們。我會評論他們,我的也存在。 – StevieP

+1

在打開PHP標記 (例如'<?php error_reporting(E_ALL);)後立即在您的文件頂部添加錯誤報告。 ini_set('display_errors',1);'然後你的其他代碼,看看它是否產生任何東西, 以及'或死(mysqli_error($ dbconnect))'到'mysqli_query()'。 –

回答

5
  • 注到未來的讀者。這個答案是基於OP的原始文章。 See the revisions

將您INSERT查詢您的條件語句中:

if($_SERVER['REQUEST_METHOD'] === 'POST'){ 

    if(isset($_POST['submitpost'])){ 

    $sql = mysqli_query($dbconnect, "INSERT INTO blog_posts (pid, author, title, post) 
     VALUES (NULL, '$_POST[author]', '$_POST[title]', '$_POST[post]')") 

    or die(mysqli_error($dbconnect)); 

    } 

} 

,改變action ="second.php<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"只是action=""

使用條件!empty()與POST陣列,以確保你沒有得到任何空數據並可能拋出錯誤。


旁註:

你現在的代碼是開放的SQL injection。使用mysqli with prepared statementsPDO with prepared statements,他們更安全


根據您的編輯,你就失去了右括號}error reporting會拋出一個通知,如果它被使用。

<form name ="myForm" action ="" method = "POST"> <br><br><br> 

    <h3> Create a Post </h3> 

    Author <input type ="text" size ="40" name ="author"/><br> 
    Title <input type ="text" size ="30" name ="title"/><br><br> 
    Post <br><textarea rows ="15" cols ="10" name ="post"></textarea><br> 
    <input type ="submit" name = "submitpost" value ="Submit Post"/> 
    </form> 
    <?php 

    if($_SERVER['REQUEST_METHOD'] === 'POST'){ 

    if(isset($_POST['submitpost'])){ 

    $sql = "INSERT INTO blog_posts (pid, author, title, post) 
     VALUES (NULL, '$_POST[author]', '$_POST[title]', '$_POST[post]')"; 

    $data = mysqli_query($dbconnect, $sql) 

     or die(mysqli_error($dbconnect)); 

    } 

    } 
+0

非常感謝!似乎做的伎倆,我只是有一個外鍵錯誤。我不明白爲外鍵輸入數據的方式,或者爲什麼甚至需要輸入數據,但我必須通過下面的內容進行分類。 – StevieP

+0

@StevieP不客氣。 –

+0

@StevieP不要忘記給他大綠色的勾號(他喜歡吸血鬼) – 2015-04-22 23:00:20

相關問題