以前、こちらでDBの内容をプルダウンメニューで表示させる処理を教えて頂き
下記のコードで実装する事が出来たのですが
<SELECT NAME="DAY">
<?php
$sql = "SELECT day FROM date_tbl ORDER BY day;";
$col = pg_query($con, $sql);
while($data = pg_fetch_array($col)){
?>
<OPTION VALUE="<?php $data['day'] ?>"><?php echo $data['day'] ?></OPTION>
<?php } ?>
</SELECT>
これを応用し、プルダウンメニューでDBの値を選択し
削除ボタンを押せば、選択した項目をDBから削除しようとしています。
しかし実行しても何も起きず自力での解決が出来なくなってしまったので
再度のご教授願えますでしょうか?
以下は自分が考えた処理です。
$del_day = mb_convert_kana($_POST['DAY_DELETE'], "n", "EUC-JP");
if($del_day){
pg_query($con, "DELETE FROM date_tbl WHERE day = '$del_day'");
}
ちなみにDBの構造は下記の通りです。
----------------------
名前 | 日付 | 登録日 |
----------------------
SELECT name,TO_CHAR(day, 'yyyy年mm月dd日') AS day,TO_CHAR(record_date, 'yyyy年mm月dd日') AS record_date
FROM date_tbl ORDER BY day, record_date;");
※DBには名前・日付・登録日があり、日付はTO_CHARで
『2007-04-01』⇒『2007年04月01日』という形に整形しています。
よろしくお願いします。
No.1
- 回答日時:
データベースのテーブルには基本的にプライマリーキーという一意の値があると便利です。
postgreであれば、date_tbl_id serial のようなカラムがあると、削除する時などに WHERE date_tbl_id = 1 のようにして削除することが出来ます。
----------------------
名前 | 日付 | 登録日 |
----------------------
というデータの場合、登録日が一意であれば
where record_date = 'yyyy-mm-dd' という形式でいいのではないかと思います。
この場合、HTML上では
<option value="yyyy年mm月dd日">yyyy年mm月dd日
と掲載するのではなく
<option value="yyyy-mm-dd">yyyy年mm月dd日
になるようにすればいいのではないかと思います。
検索するときに
WHERE to_char(record_date,'YYYY年mm月dd日') = '2007年04月01日'
のようにしても動きますが、上の場合に比べて検索に時間がかかるかと思います。
それと、入力データーをSQL文字列の中に含める場合は、必ずpg_escape_string関数などを使用して、文字をエスケープすることをお勧めします。
$del_day = mb_convert_kana($_POST['DAY_DELETE'], "n", "EUC-JP");
if($del_day){
pg_query($con, "DELETE FROM date_tbl WHERE day = '$del_day'");
}
と書くのではなく
$del_day = pg_escape_string($_POST['DAY_DELETE']);
$del_day = mb_convert_kana($del_day, "n", "EUC-JP");
if($del_day){
pg_query($con, "DELETE FROM date_tbl WHERE day = '$del_day'");
}
のように書くといいのではないかと思います。
この回答への補足
mizuno3様、ご返答ありがとうございます。
再度の質問となってしまいますが、プルダウンメニューでDBの値を選択し
削除ボタンを押してもPOSTで値の取得が出来ないのです。
mizuno3様が教えて頂いた個所以前の問題だと思います…
※例
<SELECT NAME="DAY">⇒これをPOSTで受け取る名前に指定する
<?php
$sql = "SELECT day FROM date_tbl ORDER BY day;";
$col = pg_query($con, $sql);
while($data = pg_fetch_array($col)){
?>
<OPTION VALUE="<?php $data['day'] ?>"><?php echo $data['day'] ?></OPTION>
<?php } ?>
</SELECT>
$del_day = pg_escape_string($_POST['DAY']);
$del_day = mb_convert_kana($del_day, "n", "EUC-JP");
echo $del_day;
としても何も表示されません。
という事はプルダウンで選択した値が取れていないと言う事でしょうか?
ちなみにpg_escape_string関数は使用するとエラーがログに吐き出されて
しまいました。
再度のご教授願えますでしょうか?
No.2ベストアンサー
- 回答日時:
こんにちわ。
一つずつ確認していきましょう。
var_dump($_POST['DAY']);←POST値がきちんと送られているか
$del_day = pg_escape_string($_POST['DAY']);
var_dump($del_day);←escapeされているか
$del_day = mb_convert_kana($del_day, "n", "EUC-JP");
var_dump($del_day);←encodingされているか
echo $del_day;
適度にdie()で止めてもOKです。
あと、mb_convert_kanaでencodingしているのは、プログラムとDBで文字コードが違うからですかね?
こんにちは、la_pure様
ご返答が遅れ申し訳ございません。
皆様のご教授のおかげで望んでいた処理が出来ました。
感謝しております。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 今日の日付が過ぎたらその行を削除したい 1 2023/04/01 20:06
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 【再投稿】VBAのシフト表でバグが出て困っています 3 2022/09/24 08:29
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Visual Basic(VBA) 【VBA】ボタンに登録したマクロがエラーになる 4 2022/07/25 17:47
- 英語 英文についての質問です。 The 23 million Taiwanese people live 1 2023/07/06 10:51
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
開始と終了を指定して、その間...
-
プルダウンメニューの値をDBに...
-
C言語でシステム日付との差を...
-
日付フォーマット
-
差分の月数を算出する方法
-
C言語を使って、ある特定の日の...
-
MySQLのdate型をphpで○年○月○日...
-
おかしなところがあればどんな...
-
DMMの動画を全件取得したのです...
-
Yahoo! JAPAN IDを新規取得でき...
-
Dosブロンプトでtabを出力したい
-
フォームを使わずにPOST送信す...
-
アクセスの度にIPアドレスを変...
-
【C#】DataGridViewの最大列数...
-
ローカルのコンピュータ名を取...
-
【C#】FindWindowExの使い方を...
-
先日NISAの投資信託で、初めて...
-
初歩的な質問だと思います。IF...
-
Parse error というエラーの対...
-
バッチファイルで、全てのウィ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
昨日の日付を取得するVBscript
-
substrの使い方について教えて...
-
一週間の表示の仕方と文字表示
-
PHPで以下のような占いプログラ...
-
C言語を使って、ある特定の日の...
-
アップロードしたファイル名に...
-
PHPでカレンダーを作る(縦書き)
-
プルダウンメニューの値をDBに...
-
第何週かを取得したい
-
日付によって画像を変える
-
差分の月数を算出する方法
-
SQL:TIMESTAMPの期間検索を指...
-
PHP 指定した期間だけ表示した...
-
C言語でシステム日付との差を...
-
プルダウンで今日以降の日付を...
-
Accessコンボボックス
-
MovableTypeで、ある日付を過ぎ...
-
Java Scriptで、ある日付に加算...
おすすめ情報