現在使っている掲示板は投稿を個別に削除は出来るのですが、一括削除は出来ません。一括削除だけしたいのですが、一括削除できる定型文のようなものはあるのでしょうか?よろしくお願いします。(Iモード用BBSです。本CGIスクリプトのメンテ部分です。)
sub mainte
{
my($del) = (0);
if($form{'pass'} ne $mainte_pass){
&error ("bad password.");
}
$out_val{'pass'} = $form{'pass'};
if($form{'id'}){ # delete
if(&lock($log_file, 5)){
open (IN, "< $log_file") or &error ("can't open $log_file to read. $!");
open (OUT, "> $log_file.$$") or &error ("can't open $log_file.$$ to write $!");
$del = 0;
while(<IN>){
if(/^$form{'id'}\t/){
$del = 1;
next;
}else{
print OUT $_;
}
}
close IN;
close OUT;
if($del){
rename $log_file, "$log_file.bak";
rename "$log_file.$$", $log_file;
chmod 0666, $log_file;
$msg = qq|$form{'id'}番の投稿を削除しました。<BR>\n
<A href="$out_val{'cgi_name'}">戻る</A>|;
&error($msg);
}else{
unlink "$log_file.$$";
$msg = qq|$form{'id'}番の投稿は存在しません。<BR>\n
<A href="$out_val{'cgi_name'}">戻る</A>|;
&error($msg);
}
}
}else{
if(&lock($log_file, 5)){
open (IN, "< $log_file") or &error ("can't open $log_file to read. $!");
while(<IN>){
($id, $time, $name, undef, $title ) = split "\t";
$out_val{'del_list'} .= qq|$id, $time, $name, $title<BR>\n|;
}
&page_out($mainte_page);
}
}
unlock($log_file);
return 1;
}
No.1
- 回答日時:
一括削除をするということは、Formから同じnameで複数の値が入った形(例;「bbs.cgi?id=1&id=2&id=3」)で削除対象となる記事番号が渡されるということでしょうか?
であれば、URL decodeするルーチンでそういった値を処理できるようにしておかないといけないので、実現はそんなに簡単ではありません。
CGI.pmを使っているのであれば、上記の例のような形でデータが渡された場合でも
@delete_id = $query->param( 'id' );
といった形で配列にデータを入れることができるので、あとはforeachでループを回せばいいだけの話なんですが。
No.2ベストアンサー
- 回答日時:
できればお使いの掲示版スクリプトの名前(と出来ればダウンロード先URLも)
お書き下さい。そうすればもう少し詳しくお答え出来ると思います。
この掲示版の管理者による削除方式は
1:削除したい記事の番号がわかっている場合:
その番号を削除番号入力フォーム
(例えば <input type="text",name="id" maxlength="10" size="3"> など)
に入力してからメンテナンスモードへの
submitボタン(おそらくvalueは「削除」だと思いますが)
を押すとそのまま指定した番号の記事が削除され
2:削除したい記事の番号がわからない場合:
削除番号入力フォームに入力せずそのままメンテモードに移行すると
記事の番号、タイトル等の一覧表を(おそらく削除ボタン付で)出力し、
削除したい記事のボタンをチェックしてからsubmitボタンを押すと
チェックした記事が削除される。
と言う方式のようですが、違うのであれば補足して下さい。
そして一括削除をしたいと言うことは
(A):1の場合は複数の番号をまとめて指定すると指定した番号の記事を一括して削除する。
(B):2の場合は複数の記事の削除ボタンをチェックするとそれらの記事をまとめて削除する。
ということをしたいのでしょうか。
(B)の方をやろうとすると cockyさんが書かれているように、入力処理のルーチンも
いじらないと一括削除は出来ないと思います。
とりあえず(A)のほうだけを出来ればよいのならこのサブルーチンをいじるだけでも
対応できると思います。 ただしそのような改造をすると(B)のほうがおかしくなるおそれがあります。
この回答への補足
すみません。しばらく留守していたもので、返事が遅くなりました。申し訳ありません。これは本に付いていたCDに入っていたものです。書かれていたように削除番号入力フォームに番号を入れて削除できるものです。ですが無入力でsubmitボタンを押すと、画面は変わらず、そのままで変わらないようにスクリプトができています。私とすれば単にログを消したいだけですので、削除番号入力フォームの中に全てを意味するような語句を入力すれば出来るのかなとか、あるいは、別フォームを作ってIDを全てクリアすると言う形なのかなーとか思いまして・・・。ちなみに(A):1の場合の複数の番号ですが、カンマくぎりで数字を羅列したり、ALLなどと入れてみたのですが、エラーになります。(A):1の方法でやるとすると、いくらかは簡単でしょうか?よろしくお願いします。
補足日時:2001/03/10 03:25お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
”photo id” とは何ぞや?
-
SQLサーバから、項目の属性(型...
-
マイクラPC版のコマンドで効率...
-
sqlで、600行あるテーブルを100...
-
SQLの検索について
-
ファミマTカード会員番号
-
阪急三番街 ATM(ゆうちょ)は...
-
Access パラメータクエリをcsv...
-
inner joinをすると数がおかし...
-
カンマ区切りの文字列を検索する
-
#1136 - Column count doesn't ...
-
tinyint(1) についての質問です。
-
LEFT JOIN とRIGHT JOINの合体...
-
フィールド名を変数で指定するには
-
SQL Left Join で重複を排除す...
-
Yahoo .comの idには年齢制限、...
-
上位3位を求めるSQL文は?
-
副問合せの書き方について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
副問合せの書き方について
-
select文のwhere句に配列を入れ...
-
マイクラPC版のコマンドで効率...
-
SQLサーバから、項目の属性(型...
-
エラー 1068 (42000): 複数の主...
-
[MySQL] 3つのテーブルの結合で...
-
Access パラメータクエリをcsv...
-
SQLにて特定の文字を除いた検索...
-
SQL Left Join で重複を排除す...
-
ストアドのエラーについて
-
Unionした最後にGROUP BYを追加...
-
バインド変数について
-
PL/SQLの変数について
-
sqlで、600行あるテーブルを100...
-
WordpressのContact form 7でzi...
-
selectした大量データをinsert...
-
inner joinをすると数がおかし...
おすすめ情報