人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

データがリストされたページ(listup.php)に編集ボタンと削除ボタンを表示し、チェックBOXにチェックがあるデータを、編集フォーム、削除フォーム(delete.php)へそれぞれ受け渡すphpを作成しています。
編集ボタン機能は完成したものの、削除ボタン機能を追加する場合、listup.phpをどのように記述し直せばよいのでしょうか。<(_"_)>

〜listup.php〜

<form action="input.php" method="post">
<table id="table" border="1">
<?php $ct=0;
while($data = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td><input type='checkbox' name='chk[]' value='".$data["id"]."'></td>";
echo "<td>".$data['id']."</td>";
echo "<td>".$data['name']."</td>";
echo "</tr>";
$ct++;
}
?>
</table>
<input type='submit' name='update' value=' 編 集 ' />
</form>

<form action="delete.php" method="post" >
<input type='submit' name='delete' value=' 削 除 ' />
</form>

<?php
mysqli_free_result($result);
mysqli_close($link);
?>


〜delete.php〜

<?php
$dataCount = count($_POST['chk']);

for($ct=0; $ct<$dataCount; $ct++) {
$sql = "delete from A where id = '". $_POST["chk"][$ct] ."'";

$result = mysqli_query($link, $sql);

if(!$result){
echo "SQL文の発行に失敗しました<br>";
exit();
}
}

mysqli_free_result($result);
mysqli_close($link);
?>

●質問者: m0r1y055
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● POGPI
●5ポイント

削除ボタンのonclickでfunctionを呼んで、そのfunctionで編集フォームのactionを変えて、編集ボタンをクリックすればできると思います。


m0r1y055さんのコメント
pogpiさん すみません、よくわかりません。具体的に記述していただけると大変助かるのですが。でも有り難うございました。(^ - ^)

m0r1y055さんのコメント
もしかして、このリンク先のanswerのことでしょうか? http://stackoverflow.com/questions/22061806/calling-a-php-file-inside-views-codeigniter-using-javascript

POGPIさんのコメント
リンク先が、どうして出てくるのかよく分かりませんが、Javascriptでactionを変えたり、ボタンをクリックすることはできます。

POGPIさんのコメント
document.(編集フォームのname).action = "delete.php"; document.getElementById(編集ボタンのid).click();

POGPIさんのコメント
idとかname属性は、適宜追加してください。削除ボタンは、FORMタグがいらなくなります。

m0r1y055さんのコメント
pogpiさん 別の方からベストアンサーを頂きましたので、これで質問を終了します。いろいろ有り難うございました。((<(_"_)>))

2 ● a-kuma3
●95ポイント ベストアンサー

質問にある list.php に追記してみました。元のコードを、なるべく残すようにしてあります。

<form action="input.php" method="post">
<table id="table" border="1">
<?php
 $ct=0;
 while($data = mysqli_fetch_array($result)) {
 echo "<tr>";
 echo "<td><input type='checkbox' name='chk[]' value='".$data["id"]."'></td>";
 echo "<td>".$data['id']."</td>";
 echo "<td>".$data['name']."</td>";
 echo "</tr>";
 $ct++;
 }
?>
</table>
<input type='submit' name='update' value=' 編 集 ' />
<input type='submit' name='delete' value=' 削 除 ' /> <!-- ★ こちらに移動しました -->
</form>

<!-- ★ input type='submit' のボタンは、form の中にまとめます
<form action="delete.php" method="post" >
<input type='submit' name='delete' value=' 削 除 ' />
</form>
-->

<?php
mysqli_free_result($result);
mysqli_close($link);
?>

<!-- ★ この script を追記します -->
<script>
window.onload = function () {
 var inps = document.getElementsByTagName("input");
 for (var i = 0 ; i < inps.length ; ++i) {
 if (inps[i].type == "submit") {
 inps[i].onclick = function () {
 // ★ submit ボタンと、action に指定する URL の対応です
 var action_map = {
 "update" : "input.php",
 "delete" : "delete.php",
 };
 this.form.action = action_map[this.name];
 };
 }
 }
}
</script>
<!-- ★ ここまで -->

ポイントは、みっつ。

name='update' のときの input.php は、form に既に書かれているので、同じ値で書き換えるのは、処理としては冗長ですが、処理の考え方、という意味で、敢えて書いています。
ボタンの数が増えたとき(ないかもしれませんが)でも、考え方は一緒です。

なお、ボタンの探し方や、処理の登録の仕方には、色々な書き方があります。
ここで示したのは、あくまでも一例ということで。


m0r1y055さんのコメント
a-kuma3 まさに、私が教えていただきたかったJavaScriptです! 他にもいろいろやり方があるようで、様々なQ&Aを参考にやってみましたが、なかなかうまくいかなかったので、大変助かりました。今夜はぐっすり眠れそうです(笑)。丁寧にわかりやすい回答をしてくださり、ありがとうございました?((o( ' ▽ ' )o))
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ