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

PHPについて質問です。

現在データベースへ入っている数に数を足したり、引いたりするプログラムを作成しております。

ページですが以下になります。

ページ:http://oskuni7.sakura.ne.jp/point.php
コード:http://oskuni7.sakura.ne.jp/point.phps

今回お聞きしたいのは、データを引く場合です。

データを引く場合ですが、削除ボタンを押すと削除ボタンを押した行が消えて、その行に書かれてある、ポイントの数をデータベースから引くようになっております。

削除ボタンを押してもデータが削除されず、且つ数が引かれていない状況になっております。

何回か方法を変えてやってみたのですが解決策が見当たらず困っております。

mysql_fetch_array関数でMYSQLから出したデータの削除ボタンの設定がちょっと間違っているのではないかとも考えているのですが・・。

大変お手数をおかけしますがコードを見ていただき、改変できそうな所があれば、教えていただけないでしょうか。

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:PHP コード データ データベース プログラム
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●35ポイント ベストアンサー

DB処理のソースがないので推測ですが、データ削除処理の

if(isset($_POST["".$row["NUMBER"].""]))

に正しい値が設定されていないのではないでしょうか。

データ表示から渡されるのは $_POST['1'], $_POST['2']‥‥なので、上記 if 文の外側で、すべての NUMBER の値を処理するように while ループを回す必要があります。


しかし、それは非常に無駄なループ処理です。

受け取った $_POST の値を、ポイント減算/削除の SQL 文に where NUMBER= として適用するといいでしょう。


なお、$_POST で渡された値を基準に DB を変更するのは非常に危険なことです。インターネットには公開しないようにしてください。

他サイトから $_POST に値をセットして point.php を呼び出せば、自由にDBのポイント値を変更できてしまうからです。

$_POST ではなくセッションを張るか、cookie で処理するようにしましょう。

◎質問者からの返答

ご回答ありがとうございます。

現在プログラムを実行してみたのですが、

if(isset($_POST["".$row["NUMBER"].""]))

文の条件に当てはまらずその下のプログラムが実行できないようになっています。

whileループをする以外にこのif文の条件をクリアしてプログラムを実行するにはどのようなやり方があるのでしょうか。

削除ボタンのSUBMITのname属性を変化させてやはり再設定をした方がいいのでしょうか。

お手数をおかけし申し訳ありませんがわかるかたおりましたらよろしくお願いいたします。


2 ● fut573
●35ポイント

//●データを削除

mysql_query("DELETE FROM P_POINT WHERE=".$row["NUMBER"]."");

↑ここに列名が無いのってOKでしたっけ?

mysql_query("DELETE FROM P_POINT WHERE NUMBER=".$row["NUMBER"]."");

としてみたらどうでしょうか?

◎質問者からの返答

ご回答ありがとうございます。

関連質問


●質問をもっと探す●



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