現在使っている掲示板は投稿を個別に削除は出来るのですが、一括削除は出来ません。一括削除だけしたいのですが、一括削除できる定型文のようなものはあるのでしょうか?よろしくお願いします。(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.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:25No.1
- 回答日時:
一括削除をするということは、Formから同じnameで複数の値が入った形(例;「bbs.cgi?id=1&id=2&id=3」)で削除対象となる記事番号が渡されるということでしょうか?
であれば、URL decodeするルーチンでそういった値を処理できるようにしておかないといけないので、実現はそんなに簡単ではありません。
CGI.pmを使っているのであれば、上記の例のような形でデータが渡された場合でも
@delete_id = $query->param( 'id' );
といった形で配列にデータを入れることができるので、あとはforeachでループを回せばいいだけの話なんですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- その他(プログラミング・Web制作) pythonのエラーについて 2 2022/08/17 17:17
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
Access パラメータクエリをcsv...
-
SQL Left Join で重複を排除す...
-
副問合せの書き方について
-
Unionした最後にGROUP BYを追加...
-
PL/SQLの変数について
-
android studio
-
VIEWの元のテーブルのindexって...
-
SQLite3でこんな便利なSQLはで...
-
selectした大量データをinsert...
-
複数のExcelアドインひとつのタ...
-
1テーブル&複数レコードの更新...
-
”photo id” とは何ぞや?
-
ある条件の最大値+1を初番する...
-
verilogに適したvimの設定を探...
-
group byのSQLでインデックスを...
-
insertを高速化させたい
-
親と子供が複数のSQL取得方法
-
テーブル作成です。どこかのス...
-
クエリ表示と、ADOで抽出したレ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
VIEWの元のテーブルのindexって...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
副問合せの書き方について
-
マイクラPC版のコマンドで効率...
-
Unionした最後にGROUP BYを追加...
-
selectした大量データをinsert...
-
SQLにて特定の文字を除いた検索...
-
[SQLServer] テーブル名からカ...
-
1テーブル&複数レコードの更新...
-
inner joinをすると数がおかし...
-
クエリ表示と、ADOで抽出したレ...
-
ある条件の最大値+1を初番する...
-
sqlで、600行あるテーブルを100...
-
複数テーブルのGROUP BY の使い...
-
insertを高速化させたい
-
PL/SQLの変数について
-
キー毎の、ある列のmaxのレコー...
おすすめ情報