2013-02-06 33 views
0

我有一個希望可編輯的產品列表。當用戶點擊編輯按鈕時,只有所選產品的內容需要改變(例如改變爲文本框,以便用戶可以即時編輯標題)。但是,我如何防止PHP回聲例如一個文本框到所有的產品 - 我想它會自動做到這一點?如何製作內嵌可編輯內容?

我也猜想我應該使用一些jquery的東西,使內容可編輯:P?

清單繞環是這樣的:

$items = $mysqli->query("SELECT product_name, product_id FROM products"); 
    while($products = $items->fetch_assoc(){ 
    echo $products['product_name']; 
    echo '<a href="editindiv">Edit me</a>'; 
    } 
+0

不可能使用PHP。在頁面被髮送到用戶的瀏覽器之後,php不能改變網頁的內容。你一定會需要javascript(並且jquery使這種事情變得相當容易)去做實際的編輯部分。 –

回答

1

當你的第一個評論者指出的那樣,單獨PHP是不夠的在這裏。您需要可以在瀏覽器中傳達更改的頁面JS代碼,以及可以將這些更改並將其轉回到數據庫中的PHP腳本。你可以自己編寫,或使用專門爲此目的而存在的經過驗證的庫,如http://backbonejs.org/http://angularjs.org/

這些是模型/視圖框架,可讓您在頁面上顯示數據庫數據的視圖,同時保持它們可編輯,在線更新條目時更新數據庫記錄。但要注意的是:如果你從未使用過MVC框架,那麼你最初可能會很困惑。該方法與「使用PHP從數據庫獲取數據,生成頁面內容,發送給客戶端,最終」方法更簡單得多完全不同。

1

不一定是最有效的,但如果沒有大量的產品如何爲每個產品包含一個簡單的表單,而只是隱藏它直到點擊「編輯」鏈接?

列表/表格:

$items = $mysqli->query("SELECT product_name, product_id FROM products"); 
while($products = $items->fetch_assoc(){ 
    echo "<span>" . $products['product_name'] . "</span>"; 
    echo "<a class='editButton'>Edit</a>"; 
    echo "<form action='products.php' method='post' style='display: none;'> 
     <input type='hidden' name='product' value='" . $products['prodcut_id'] . "' > 
     <input type='text' name='title' value='" . $products['product_name'] . "' > 
     <input type='submit' value='Update' > 
     </form>"; 
    echo "<br/>"; 
} 

jQuery的:

$(".editButton").click(function(){ 
    //Hide the text entry and the edit link 
    $(this).prev().hide(); 
    $(this).hide(); 
    //Show the form 
    $(this).next().show(); 
}); 

如果你不想重新載入頁面提交更改,你可以通過AJAX提交他們太多了更加動態的用戶經驗。

+0

但是,如果你按照你的建議,我想如果你點擊編輯按鈕,它會顯示所有產品的表單(在while循環中)而不是一個產品的權利? – simon