2017-03-13 36 views
0

我正在創建一個社交網絡,我給了用戶一個發佈狀態的選項。當我點擊帖子狀態到時間線按鈕時,即使我填寫了框,我也會得到其他語句,即You didn't enter anything. <a href= home.php>Try again</a><br />。我已經嘗試了多次修復這個,但我不能。當我點擊時間軸按鈕的發佈狀態時,我想將信息存儲在我的數據庫中,以便將其發佈到他們的個人資料中。有人可以幫我解決這個問題嗎?PHP contenteditable錯誤

home.php:

<form action="poststatus.php" method="post"> 
    <button id="bt6" type="submit" name="button">Post status to your timeline</button> 
    <b> 
     <div contenteditable="true" placeholder="Post status" name="userpost" id="content"></div> 
    </b> 
</form> 

poststatus.php:

<?php 

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

include("connect.php"); 

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

    if (empty($_POST["userpost"])) { 
     echo "You didn't enter anything. <a href= home.php>Try again</a><br />"; 
    } else { 

     $sql = "INSERT INTO posts (username, post, post_date) VALUES ('" . $username . "', '" . $post . "', '" . $date . "')"; 

     if (mysqli_query($conn, $sql)) { 

      echo "Your post was added."; 
     } else { 
      "<br>error posting . <br> <a href= home.php>Try again</a> " . mysqli_error($conn); 
     } 
    } 
} 
+1

設置'CONTENTEDITABLE =「真」'在一個div不會讓它表單輸入。它仍然只是一個div,並且添加一個'name'屬性也不會使它成爲一個整體。在發佈數據之前,您需要將內容複製到表單中的隱藏輸入。 –

+0

'$ username','$ post','$ date'看起來也是未定義的,並打開SQL注入。一旦獲得發佈數據後,您應該參數化。 – chris85

+0

順便說一句,你錯過了一個'回聲'之前你的錯誤信息。 –

回答

0

嘗試改變<div><textarea><input>元件。

+1

你應該解釋_爲什麼OP應該這樣做。通常,當答案以_「Try」_開頭時,意味着它應該被寫爲註釋。 –

+0

現在在我的poststatus頁面上,它什麼也沒有顯示 – Dada

+0

@MagnusEriksson,沒有足夠的聲望來添加評論。請記住這個建議,謝謝。 –

0

帶有contenteditable標籤的任何元素都不會使用HTML表單發送。如果您想捕捉div內的內容,則需要設置事件以獲取所述div的內部內容。通常,在所述元素之後添加隱藏的輸入以將html包含在表單數據中。

一個庫,如http://jakiestfu.github.io/Medium.js可以幫助你添加漂亮的標記。

+0

我把它切換到'