- ベストアンサー
ループ文で呼び出したデータの複製方法
- ループ処理を使用してPHP初心者がDBから投稿した記事を一覧表示する方法を紹介します。表示された記事一つ一つに複製ボタンを追加し、ボタンを押すことでその記事をDB上に複製する方法を説明します。
- ページ遷移せずにDB上で記事を複製する方法について考えています。非表示のinputタグを使用して記事のIDを取得し、それをベースに複製処理を行います。
- 連続で呼び出されているデータから一つの記事を選択し、その記事を複製するためには選択した記事のIDを取得し、そのIDを使用して複製処理を行います。解決策を見つけることができなかった場合は、他の方法を試すことをおすすめします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>表示された一覧記事一つ一つにボタンをつけてボタンを押したら そういう条件であれば、Loopの中でForm要素を生成してください。つまりボタンごとに全部別のフォームにすべきです。でないと、どのボタンが押されたのかが判別出来ません。 というかボタンがsubmitになっていないということは、他の手段で(JavaScriptなどで)POSTする予定なんでしょうか? 普通は foreach (何らかのループ) [ print '<form action="" method="post">' . PHP_EOL; print '<tr>' . PHP_EOL; print '<td>' . $a++ . '</td>'; print '<td>id = ' . $row['id'] . '</td>'; print '<td>name = ' . $row['name'] . '</td>'; print '<td><a href="http://localhost/test/' . $row['slug'] . '">' . $row['slug'] . '</a></td>'; print '<td><img width="200" height="200" src="' . $row['links_img'] . '" /></td>'; print '<td>' . $row['description'] . '</td>'; print '<td><input type="hidden" name="id" value="' . $row['id'] . '"><input type="submit" value="複製"></td>' . PHP_EOL; print '</tr>' . PHP_EOL; print '</form>' . PHP_EOL; } // ループここまで とします。JavaScriptなどでPOSTさせるというのであれば、今現在その部分をどう書いているのかを提示してください。 (以下蛇足) まぁ、 >できればページ遷移を行わずに複製が理想なのですが、 ということなので、jQuery.postあたりを使うならフォームの必要すらないかもしれません(全部自前ででセットしてPOSTすればいいので)。単なるボタン要素にしてonclickで呼び出す関数(その関数内でpostする)に引き渡すのを$row['id']とかにすればいいでしょう。 http://semooh.jp/jquery/api/ajax/jQuery.post/+url%2C+data%2C+callback%2C+type+/ print '<input type="button" onclick="postdata(' . $row['id'] . ')">'; みたいな感じで出来ませんかね(未検証ですのであしからず)。
お礼
参考にさせていただきとりあえず実現することができました。 jQuery.postはこれから勉強したいと思います。 ありがとうございました。