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>';
  }
4

2 回答 2

1

正如您的第一个评论者指出的那样,仅 PHP 是不够的。您将需要可以在浏览器中传达更改的页面 JS 代码,以及可以获取这些更改并将它们返回数据库的 PHP 脚本。您可以自己编写,也可以使用专门为此目的而存在的经过验证的库,例如http://backbonejs.org/http://angularjs.org/

这些是模型/视图框架,可让您在页面上显示数据库数据的视图,同时保持它们可编辑,并在您在线更新条目时更新数据库记录。但请注意:如果您从未使用过 MVC 框架,那么您一开始可能会感到非常困惑。该方法与更简单的“使用 PHP 从数据库获取数据,生成页面内容,发送到客户端,结束”方法完全不同。

于 2013-02-06T19:53:36.613 回答
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 提交它们以获得更动态的用户体验。

于 2013-02-06T20:15:28.277 回答