• ベストアンサー

DBに登録されているデータの削除

こんにちは。お世話になっております。 題名にあるように、DB(MySQL)に登録のあるデータの削除なのですが、where句により一覧表示を指せた際、チェックボックスも表示させ、ボタンを押す事によりチェックされたデータを削除したいと考えています。 このような場合は配列を使う(?)、とまでは分かるのですが、具体的なコードが思い浮かばないもので・・・ 以上、初歩的(毎度ですが…汗)な質問かと思われますが、適切なキーワードが思い浮かばず、調べても分からないため質問させて頂きました。お忙しい中恐縮ですが、少し踏み入ったヒントだけでもご指導いただければ有難く思っております。宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • f_motion
  • ベストアンサー率53% (7/13)
回答No.3

こんんちは、 現在どんなソースを書いているか分かりませんが ちょっと間違えてましたが、下記のような感じで表示して。 //DBからデータ所得してhtml表示 $sql = "SELECT文"; $res = mysql_query($sql,$conn); while ($row = mysql_fetch_array($res)){ echo '<form action="up.php?no='.$row['no'].'" method="post">'; echo '<input name="check" type="checkbox" value="1">'; echo '<input type ="submit" name = "submit" value = "更新">'; echo '</form>'; } up.phpで、 $no = $_GET['no']; $check = $_POST['check']; $checkが1ならば以降DB削除処理 簡単に書くとこんな感じでしょうか。

sadacha
質問者

お礼

f_motion様 こんばんは。お世話になっております。 只今、お教えいただいたコードをヒントに、試行錯誤ながらにも色々と試しているところです。 取り急ぎお礼まで・・有難う御座いました。 追って結果報告させて頂きます!

sadacha
質問者

補足

f_motion様 こんばんは、お世話になっております。 ご報告遅れてしまいましたが、只今、チェックボタンを利用したコードにて削除をする事まで出来ました! まだまだ不具合もあったりで、完成の域には達しておりませんが、お返事が長引くのも恐縮ですので、ひとまず、ここは「解決できた」とさせて頂きます。 色々と有難う御座いました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

#1さんのフォロー テストなど実運用でない場合は、不要なデーター=削除でも問題ないのですが、実運用となると削除したあとで・・・『削除を取り消したい』という事は結構頻繁にあります(笑) そこで#1さんの回答のように運用上は削除されているがdb上は存在する状態を作るのに削除フラッグなどの名称でフラッグを作って運用すると・・・便利です。 実際の削除は、PHPなどのアプリではなく権限を持ったユーザーがdbを直接 操作して削除フラッグを選択して削除します。 この操作で削除した場合は、バックアップなどからリカバーしないと回復しません。

sadacha
質問者

お礼

qaz_qwerty_me様 はじめまして、こんばんは。 運用面に関し、貴重なご意見をいただけたと思います。有難う御座いました。

全文を見る
すると、全ての回答が全文表示されます。
  • f_motion
  • ベストアンサー率53% (7/13)
回答No.1

データを一つだけ消したいなら、特にチェックボックスとかは、必要ないかも、 複数の場合は、ちょっと面倒です。 $noにデータNOを入れて、 削除プログラムでGETでそのNOを取得してそのデータを削除すれば大丈夫だと思います。 ただ、通常データ削除は、UPDATEで FLAGなどフィールドを作成してその値を、1とかにして表示しないようにしたりするのが、 一般的ですが。 where (){ echo '<form action="?no='.$no.'" method="post">'; echo '<input type ="submit" name = "submit" value = "更新">'; echo '</form>'; }

sadacha
質問者

お礼

f_motion様 はじめまして、こんばんは。 お忙しい中、コードまで記述していただき有難う御座います。 チェックボタンは使わず、GETで渡しで…というところまでは、「なるほど・・ああして、こうして・・」イメージが沸いてきたところです。有難う御座います。 しかしながら、出来ることならチェックボタンを表示させ、チェックの入ったデータを削除する・・という流れにしたいのです。 先ほどのアドバイスをヒントに、チェックボタンを取り入れたものをイメージを描いているのですが・・どうにも上手く行きません。引き続きヒントだけでも頂けたら幸いです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 登録データの繰り返し削除

    こんばんは。お世話になっております。 DBを利用し掲示板を作っているのですが、初回に投函されたものだけを検索結果として表示させ、チェックボックスにて削除できるよう、以下のようなスクリプトを記述してみたのですが、value値をauto_incrementであるidだと、初回投函のみのデータだけが削除され、投函の返信は残ったままとなってしまいます。 // データベース接続   ・   ・ // 削除データ取得 if (@$_POST["c1"]) { $c1 = $_POST["c1"]; $sql = "DELETE FROM table1 WHERE (id IN ("; for ($i = 0; $i < count($c1); $i++) { $sql .= intval($c1[$i]); if ($i < count($c1) - 1) { $sql .= ", "; } else { $sql .= "))"; } } mysql_query($sql, $conn) or die("エラー"); } //テーブル接続   ・   ・ while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<form method=\"POST\" action=\"".$_SERVER["PHP_SELF"]."\">"; echo "<br>"; echo "<input type=\"checkbox\" name=\"c1[]\" value=\"".$row["id"]."\">";   ・   ・  以下省略 以上のままだと初回投函のみの削除となるため、一回の動作で返信も削除したいために、投函に属する値(id_keyとして同じ値を設定済み)にしたいと考えているのですが、for文中におけるコード設定が分からず、アドバイスをいただければと投函させて頂きました。 ループ条件の設定によるものなのでしょうが、その条件を設定するためのコードまで浮かんで来ません。 何処をどう説明したら良いのか分からず、分かりにくい説明になっておりますが、ヒントなどいただければ幸いに思っております。お忙しい中恐縮ですが宜しくお願い致します。

    • 締切済み
    • PHP
  • DB全文検索について

    このたび、この「教えてGoo」「オンラインショップ』等ののような検索システムを作ることになりました。 「教えてGoo」質問検索の欄にキーワードを入れると、検索されますが、おおよそ40万件の質問や回答の中からすぐ検索結果がでてきます。そのままWhere句で検索してるはずないと感じました。このような全文検索系をデータベースでやる場合のテーブル構成等のテクニックをお教えいただけないでしょうか。よろしくお願いいたします。使用するDBはMySQLです。

  • ListBoxの選択した項目を削除したら、DBの同じデータの行も削除を

    ListBoxの選択した項目を削除したら、DBの同じデータの行も削除をしたいです。 環境:XP-Pro/VB2005/SQLServer2005 簡単なSchedule管理ソフトを作成しています。 画面には左側にMonthCalendar、開始時間を表示するDomainUpDown、件名、内容を入力するTextBoxと登録ボタンがあり、左側にListBox、その下に修正ボタン、削除ボタンが配置してあります。 登録ボタンを押すとListBoxに内容が表示されると同時にDBにデータが保存されます。 DBのテーブル:Shortは startdate(日付) DateTime start(開始時間) varchar(50) subject(件名) varchar(50) contents(内容) varchar(50) *日付と開始時間は複合主キー 今回は登録した項目を選択して削除ボタンをクリックしたら、DB内の同じ内容も削除するという動作です。 分からない部分はDBに接続してコネクションを定義した後のSQLステートメントです。 現在は、 connection.Open() Command.CommandText = "DELETE FROM Short WHERE start = '" & ListBox1.SelectedIndex &"'" Command.ExecuteNonQuery connection.Close() となっています。が削除されませんでした。 SQLステートメントで"ListBoxの選択している項目と同じ行"というようにWHERE句で定義したいのですが分かりません。 ご指導よろしくお願いいたします。

  • dbに登録したデータをphpのプルダウンに表したい

    mysqlに登録したデータをphpのプルダウンに表示させたいです。 database [db1] table [unit]カラム group varchar(20) に登録しているグループ名5個を選べるようにしたいのですが知恵を拝借できますでしょうか。 <?php $s=mysql_connect("サーバー名","アカウント","パスワード") or die("失敗しました"); print "接続OK"<BR>; mysql_select_db("db1"); ここから先が知りたいです。 みなさまのお知恵を拝借したいです。 ぜひよろしくお願い致します。

    • ベストアンサー
    • PHP
  • オラクルDBのデータ削除タイミング

    お世話になります。 .NETとオラクルで作られた小さいシステムを引き継ぎました。 その中にメインになるDBがあり3ヶ月以前のデータは .NETの夜間削除処理APでDELETEしています。 そのメインDBにトリガーテーブルがあるのですが、1日分の データしか保存されていません。 しかし、どこで消えているのかが見つけられないでいます。 .NETの全APを検索してもないし、オラクルの機能であるような気が しているのですが、よくわかりません。 トリガーの条件は「INSERT」と「UPDATE」です。 どなたかヒントを下さい

  • phpMyAdminでデータを削除できないのですが・・・

    phpMyAdminでテーブルの中身を表示させ削除したいデータ(レコード?)に複数チェックを入れ、 「チェックしたものを」の横にある削除ボタンを押したのですが、 「本当に削除しますか?」という確認とDELETE FROMで始まるSQLが表示され、 「はい」を選択し実行しても結果的にデータが削除されません。 一件づつ削除する分には成功するのですが、複数のレコードにチェックを入れて 「チェックしたものを」の横にある削除ボタンから削除しようとすると失敗します。 表示されたSQLをコピーして、 SQLのタブで貼り付けて実行すると、削除できました。 構成ですが、 windows 2003 server standard IIS 6.0 ZendCore 2.5 (MySQLとphpMyAdminはZendCoreに付属のものです) MySQL 5.0.27 phpMyAdmin 2.10.0.2 となっております。 phpMyAdminのみ最新版も試してみましたが、 ダメでした。 一応、rootでログインして実行しております。 何か設定等があるのでしょうか? よろしくお願いします。

  • データがある場合のカラムの削除

    データがあるカラムを削除したいのですが、出来ません! drop column column_name だとデータ無しの場合しか通用しなくて・・・。 削除対象のカラムのデータだけを消そうかと、 delete from table_name where column_name=値; も考えたのですが、 where句で引っ掛かったレコードが全部消えてしまいます・・・。 1カラムだけ削除する方法を教えて下さい(><) 宜しくお願いします。

  • sqliteでWHERE句に存在しないデータを削除

    PHPのsqliteで $sql=DELETE FROM TABLE WHERE C=データ $db->exec($sql) を使ったところ、WHERE句に存在しないデータがあると、エラーとなります。 sqliteで存在しなくてもエラーとならないような処理はどのようにしたらいいでしょうか?

  • PHPのプルダウンメニューにDBのデータを入れたいのですが。

    初めて質問させていただきます。 PHPとMySQLを使って、とあるwebページを作成したいのですが、 DB内のあるテーブルのデータを、PHPの配列に格納し、その内容をプルダウンメニューに反映させたいのです。 データベース内のテーブルの内容(例)は以下のとおり。 テーブル名:sample | 番 | 時 | | 号 | 間 | ------- | 1 | 朝 | | 2 | 昼 | | 3 | 夜 | ------- プルダウンメニューに表示させたい内容は、この場合では「時間」です。  ---- |朝 ▼|   「▼」をクリックすると  ---- ↓  ---- |朝 ▼| |昼   |   このように表示される。 |夜   |   内容はDBから取ってきたもの。  ---- このように表示したいのです。 どなたかPHPに詳しい方、よろしくお願いします。

    • ベストアンサー
    • PHP
  • DB(MySQL)から複数行のデータを取り出す方法

    最近PHPを勉強していて、初歩的な質問で申し訳ないのですが どうしてもわからないので質問させていただきます。 例えば、MySQLに以下のようなデータがあります。   年齢 名前 性別   28  AAA  男   20  BBB  男   25  CCC  女 ここで男のレコードだけ取り出したいと思い 以下のようなコードを書きました。   //MySQLへデータを保存する。   mysql_connect("localhost","root","");   mysql_select_db("DB名");   //データの取得   $id = mysql_query("SELECT '年齢','名前','性別' FROM テーブル名 WHERE '性別' = '男'");   $array=mysql_fetch_row($id); この場合、2行のレコードが選ばれるはずですが 後ろのレコードへのアクセスの仕方がわかりません。 $arrayには性別=男に該当する、一行目のレコードが入っています。 二行目のレコードへはどうやってアクセスすればよいのでしょか? 調べてもなかなかうまくいかずご質問させていただきました。 ご回答お願いします。

    • ベストアンサー
    • PHP