過去の質問にいくつか似たようなものはあったのですが、解決出来ませんでしたので質問させて頂きます。cgiでページを作成しています。今回処理したい内容は、一覧表の複数のチェックボックスから、オンになっているvalue値を取得し、その値に一致するナンバーを使って別のファイルのデータを削除するといった処理です。
== html一部内容 ==
<form action='update.cgi' method='POST'>
<input type='checkbox' name='del_0' value='0'>
<input type='checkbox' name='del_1' value='1'>
<input type='checkbox' name='del_2' value='2'>
<input type='submit' name='submit' value='削除'>
</form>
== update.cgiの一部内容 ==
for($loop=2,$loop>=0,$loop--)
{
$del[$loop]=$in{'del_$loop'};
}
データ数が多いのでループさせてすべてのチェックボックスのvalue値を取得したいと思っています。チェックボックスがオフの場合の扱いがいまいち分かっていません。一つずつ例えば
$del_1=$in{'del_1'};
と代入していくとonのもののみ取得できます。しかしループにするとonの値も変数に入りません。
どんな方法でも良いので、すっきりとチェックボックスのvalue値を変数に取得する方法を教えてください。お願い致します。M(v_v)M
No.4ベストアンサー
- 回答日時:
>ご指摘の方法ですと、チェックボックスのvalue値ではなくそのまま0,1,2が代入されてという感じになるような気がするのですが・・・
テスト用に代入しているだけです。
説明不足ですいません。
私が言いたかったのは「$in{'del_$loop'}」では「$loop」の変数が展開されずにただの文字列として扱われてしまう点です。
シングルクォーテーションではなくてダブルクォーテーションでないとまずいということです。
返事が遅くなりましてごめんなさい。私の理解不足で、再度ご回答ありがとうございます。うまく値を取得することができました !(^_^)! シングルコーテーションが原因とは全く気づくことが出来ませんでした。本当にありがとうございます!!
No.3
- 回答日時:
del_nのnの値がvalue(値)と同じなのであれば、
フォームから送られてきたデータをデコードしてハッシュ(%in)に入れる処理の部分を変更することで楽にできます。
1.チェックボックスの名前をdel_nにせず、全て同じ名前(ここではdel)にする。
2.本来のフォームデータを%inに値を代入する処理の前の行を以下のようにする。
$in{$name} = $value; #$nameがフォームの名前、$valueがその値とする
↑の行がその代入する行だとして、
if($name eq "del"){push(@list,$value); next;}
$in{$name} = $value;
とする。
これで、名前がdelの時に配列listに値だけが入る。
nextすることでフォームからのデータを順にハッシュに代入していく処理を次に行かせる。
3.配列listが削除処理対象のリストになっているのでこれを煮るなり焼くなり好きにする。
という感じです。
CGI.pmでフォームデータをデコードしているのなら、
@list = $query->param('del');
で取れるでしょう。
ご回答ありがとうございます。お礼が遅くなり申し訳ありません。私の知識ではpushが新しい使い方だったりで少してこずりましたが、何とかこの方法でも確認する事ができました。ほんとうにありがとうございました。
No.2
- 回答日時:
>$in{'del_$loop'}
↑っておかしくないですか?
いくらループしても「del_$loop」というキーが指定されてしまいます。
forの書式もちょっとおかしいような・・・。
$in{'del_0'}=0;
$in{'del_1'}=1;
$in{'del_2'}=2;
for($loop=2;$loop>=0;$loop--)
{
$del[$loop]=$in{"del_$loop"};
print $del[$loop];
}
という感じでテストしてみたら上手く行ってるようです。
この回答への補足
回答ありがとうございます。ご指摘の方法ですと、チェックボックスのvalue値ではなくそのまま0,1,2が代入されてという感じになるような気がするのですが・・・$in{'del_$loop'}はチェックボックスのnameを指定してそのvalue値を取得する方法として利用しています。説明が理解できてなければすいませんM(v_v)M
補足日時:2004/06/30 11:56お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの書き換え箇所がわかり...
-
なぜかわかりませんscanf()の戻...
-
配列へのポインタの代入
-
ポインター引数の関数でコンパ...
-
htmlソース編集で、各タグを何...
-
UTF-8で5~6バイトになる文字コ...
-
エクセルシート名の制限を変更...
-
char str[256]の256の意味は?
-
Excel 1セル当りの文字数が2...
-
10Mバイトて文字数に すると何...
-
ビットスワップとバイトスワッ...
-
COBOLのCOMP形式について
-
Line Inputにて改行があっても...
-
stable diffusionのエラー
-
ピクセル,dpiから容量(バイト...
-
バイナリとBCDコード
-
Rstudioによるテキストマイニン...
-
日付時刻を4バイトに
-
windowsのファイルパス最大文字数
-
Excel VBA で Oracle CLOB型カ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pythonにCでのexternはありますか
-
python 3.10で 同じlistに同じ...
-
CSVから構造体へ代入
-
VBScriptでカレントディレクト...
-
マクロの書き換え箇所がわかり...
-
Perlで変数中のエスケープされ...
-
c言語 グローバル変数
-
なぜかわかりませんscanf()の戻...
-
UWSCにおける変数の扱い方
-
VB2010での連立方程式の計算
-
ポインター引数の関数でコンパ...
-
10Mバイトて文字数に すると何...
-
UTF-8で5~6バイトになる文字コ...
-
Excel VBA メール作成について ...
-
char str[256]の256の意味は?
-
エクセルシート名の制限を変更...
-
stable diffusionのエラー
-
COBOLのCOMP形式について
-
Excel 1セル当りの文字数が2...
-
DataGridViewの特定列に入力さ...
おすすめ情報