以前、こちらで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.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様
ご返答が遅れ申し訳ございません。
皆様のご教授のおかげで望んでいた処理が出来ました。
感謝しております。ありがとうございました。
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関数は使用するとエラーがログに吐き出されて
しまいました。
再度のご教授願えますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
最近、いつ泣きましたか?
泣いてストレス発散! なんて言いますよね。 あなたは最近いつ、どんなシチュエーションで泣きましたか?
-
【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
2024年は「名探偵コナン30周年」「涼宮ハルヒ20周年」などを迎えますが、 あなたが「もうそんなに!?」と驚いた○○周年を教えてください。
-
CDの保有枚数を教えてください
ひとむかし前はCDを買ったり借りたりが主流でしたが、サブスクで簡単に音楽が聴ける今、CDを手に取ることも減ってきたかと思います。皆さんは2024年現在、何枚くらいCDをお持ちですか?
-
【お題】絵本のタイトル
【お題】 「ないた あかおに」「ねないこ だれだ」「はらぺこあおむし」みたいだけど、一体これどういう内容?と思った絵本のタイトルを教えて下さい
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
プルダウンメニューにDBの内容を表示させる
PHP
-
プルダウンで選択すると、DBの値を取得したい
JavaScript
-
連動させたいセレクトボックスについて。
PHP
-
-
4
dbに登録したデータをphpのプルダウンに表したい
PHP
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLのdate型をphpで○年○月○日...
-
php カレンダーの休み表示
-
PHPでmysqlを使ってます。日時...
-
sql、where複数条件
-
ps3で久しぶりにCDの音楽情報取...
-
ミュージックのアートワークを...
-
飛び先のランダムURLの取得方法...
-
バッチファイルで、全てのウィ...
-
築24年の中古住宅は住宅ローン...
-
format関数について
-
phpでcookieがうまく保存されない
-
Wordでウィンドウハンドル(Hwn...
-
glob関数のパターンマッチについて
-
session_cache_limiterの使い方
-
VBSであるAD情報を取得したいで...
-
携帯電話の認証
-
バッチファイルでpingの結果を...
-
m3uが再生されない
-
PHP時間の比較
-
Excel VBA:特定の文字列以降(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
開始と終了を指定して、その間...
-
ファイル名に日付の挿入
-
アップロードしたファイル名に...
-
昨日の日付を取得するVBscript
-
日付によって画像を変える
-
昨日の日付名でファイルを作成...
-
C言語でシステム日付との差を...
-
C言語を使って、ある特定の日の...
-
php storetotime 最終日の前日
-
第何週かを取得したい
-
Accessコンボボックス
-
差分の月数を算出する方法
-
PHP 指定した期間だけ表示した...
-
月曜日から始まる週間カレンダ...
-
PHPでカレンダーを作る(縦書き)
-
改行されないカレンダー(PHP)
-
6ヶ月前の日付を取得するにはど...
-
date関数で、曜日を日本語表示...
-
SQL:TIMESTAMPの期間検索を指...
-
PHPでの日付について
おすすめ情報