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

必ずしも最も効率的とは限りませんが、製品の数がそれほど多くない場合は、製品ごとに単純なフォームを含めて、[編集]リンクをクリックするまで非表示にしてみてはどうでしょうか。

リスト/フォーム:

$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 に答える
1

最初のコメンターが指摘したように、ここでは PHP だけでは十分ではありません。ブラウザで変更を伝えることができるページ上の JS コードと、それらの変更を取得してデータベースに戻すことができる PHP スクリプトが必要です。自分で書くか、この目的のために特別に存在する実証済みのライブラリ ( http://backbonejs.org/http://angularjs.org/など) を使用できます。

これらは、ページ上にデータベース データのビューを表示できるようにするモデル/ビュー フレームワークであり、オンラインでエントリを更新するとデータベース レコードが更新され、編集可能に保たれます。ただし、注意してください。MVC フレームワークを使用したことがない場合は、最初は非常に混乱する可能性があります。このアプローチは、はるかに単純な「PHP で db からデータを取得し、ページ コンテンツを生成し、クライアントに送信して終了する」アプローチとはまったく異なります。

于 2013-02-06T19:53:36.613 に答える