A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
データの挿入についてでつ。
ファイル data.txt に[ID\tデータ\n] な形で保存されている場合を仮定します。
# 差し込みたい対象の ID が $target に入っているとします
#差し込むデータは $newdata とします
open(F,"data.txt");
@hoge = <F>;
close(F>;
$newid = @hoge + 1; # 全投稿数+1 してあたらしぃIDを決定
open(W,">data.txt");
foreach $popo( @hoge ){
($id,$data)=split(/\t/,$popo);
print W "$id\t$data";
if($id == $target){
print W "$newid\t$newdata\n";
}
}
close(W);
至極簡単に実現する方法です。実際に使うにはいろいろと足りないとは思いますが。動くとは思います。
(例のごとく動作未確認です
No.2
- 回答日時:
返信ってか、ツリー関係が保存される掲示板ですか。
この場合は、普通それぞれの投稿に"一意"なIDを振る必要があります。ですので ID に 1 を足すってのは結構です。が、以下のような場合を考えてください。
ID 1 で新規投稿
ID 2 で新規投稿
ID 1 に対して 1 個返信があれば ID は 1+1 で 2。
なんと、 ID 2 の投稿が二つ・・・
お分かりかと思いますが足し算程度の簡易な方法だといずれIDがカブることになります。
ミソは、"一意に決まるID"です。
たとえば、返信しようとしている投稿にすでにある返信の数を保存し(COUNT ?)、それをIDに"くっつける"。
つまり ID 1 にたいして3個目の返信は 1.3 にする。とか。 でこの返信にさらに返信をつけるときは 1.3.1 とか。
あるいは、擬似乱数とかプロセスIDと実行時間などを用いて一意に番号をつけられるならそれでもいい。
はたまた、全投稿すうを見て順番に番号を振るなんてのも簡単ですが有用です。(投稿の数を数えるか、数を保存するファイルがあるということです)
あとぉ、 表示の際に for や while でまわすのは効率的に良くないので、投稿時にキャッシュみたいな形でHTMLファイルを吐くとか、そもそも階層保存ファイルをHTMLで書き出すとか・・・いろいろあると思います。
回答ありがとうございます。
考え方自体は間違えてないみたいですね。よかったです。
ログファイルの書き込みの仕方を、単なる追加ではなく、日付順に並び替えて書き込みしなおす(新しいものが一番上に行くことによって、
ログファイルを開いた時に勝手に日付順に変わる)というような方法になおしました。
さらにやりたいことがあって、新規の時は今のままでいいのですが、返信の書き込みの時に、ログファイル中から、自分と同じIDを探し出して、
そのIDの下にログファイルを追加したいのです。
「挿入」のような形です。
これを実現させるためにはどのようにしたらいいと思いますか?
概念だけでも教えていただけると嬉しいです。
それとIDですが、これは新規の場合は、ログファイル中のID番号の中から一番大きな数字を拾ってきて、それに1を足すという形にしました。
返信の場合は、親IDをそのまま引っ張っていくようにしてあります。
さらにCOUNTというのは、親記事の場合は0で、返信記事になると1になるような変数です。
これで親記事なのか返信記事なのか見分けようと思いまして。
No.1
- 回答日時:
自分は配布されている掲示板のソースを参考にして作ったことがあります。
3年位前でしかも作りかけ(^^;)他の方の書いたソースを参考にして書いてみるのも,立派な勉強だと思いますよ。
具体的な返信機能の実装方法ですが,KODAMARさんのでもできると思いますが,表示させるときに大変になると思います。for文でもwhile文でも。返信記事がいくつあるのかを取得するのが大変だと思います。
ですから,保存するときにIDとともに,どのIDの記事への返信かを分かるような情報を付け加えれば良いと思います。返信でない記事へはその値を空にするとか。
そうすれば,2つの値のIDが一致したときに表示してやれば,うまく親記事と変身記事が表示されると思います。
分かりにくい文章ですが,参考になれば幸いです。
回答ありがとうございます。
考え方自体は間違えてないみたいですね。よかったです。
ログファイルの書き込みの仕方を、単なる追加ではなく、日付順に並び替えて書き込みしなおす(新しいものが一番上に行くことによって、
ログファイルを開いた時に勝手に日付順に変わる)というような方法になおしました。
さらにやりたいことがあって、新規の時は今のままでいいのですが、返信の書き込みの時に、ログファイル中から、自分と同じIDを探し出して、
そのIDの下にログファイルを追加したいのです。
「挿入」のような形です。
これを実現させるためにはどのようにしたらいいと思いますか?
概念だけでも教えていただけると嬉しいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP ページング データベース 1 2022/06/16 10:30
- 訴訟・裁判 ネットの掲示板〝爆サイ〟で、前の会社の嫌な上司の実名を出して誹謗中傷を書き込んだら、プロバイダより〝 1 2022/04/07 18:05
- 訴訟・裁判 ネットの掲示板〝爆サイ〟で、前の会社の嫌な上司の実名を出して誹謗中傷を書き込んだら、プロバイダより〝 1 2022/04/07 18:06
- Windows 8 QTTabBarが無反応になる 2 2023/04/07 14:17
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- その他(SNS・コミュニケーションサービス) ネットで誹謗中傷したつもりが無いのに誹謗中傷だと言われました。 私はとある男性アイドルを応援していて 5 2023/06/20 00:12
- その他(ブラウザ) Twitterの「返信をさらに表示」 ボタンの後ろに隠れているツイートを常に表示 1 2023/08/04 12:20
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- 事件・犯罪 何度か同じ質問をしていますが、幅広く皆さんの意見を聞きたいので、再度投稿致します。 当方、加害者側で 2 2022/04/14 21:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAで作成したマクロをxl...
-
コマンドプロンプトでデスクト...
-
タイトルバーやメニューバーの...
-
パワーポイントの自動再生はで...
-
onedriveで同期解除をしたら、...
-
沢山のフォルダにあるファイル...
-
ごみ箱から元に戻したファイル...
-
Edgeでダウンロード状況表示画...
-
isoイメージファイルの復元方法
-
hamachiにログイン出来ません
-
マイクラでコマンド使いたいの...
-
TXTファイルを上書き保存する前...
-
「切り取り」「貼り付け」間エ...
-
置き換え消去したファイルの復...
-
セントボックスの中身が消えた!
-
壁紙・スクリーンセーバーの削...
-
動画のサイズと再生時間の長さの件
-
移動先にないファイルのみをコ...
-
Chromebook リカバリができません
-
入力/出力エラーですというファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
読み取り専用ファイルを上書き...
-
Excel VBAでほかのアプリケーシ...
-
コマンドプロンプトでデスクト...
-
Excel VBAで作成したマクロをxl...
-
vbaでIEの名前を付けて保存(A)...
-
エクセルVBAについて
-
VBAで、強制保存してブックを閉...
-
ExcelVBAでデスクトップのPATH...
-
エクセルで「名前を付けて保存...
-
VBA メモ帳の上書き保存がしたい
-
VBScriptで日本語が変です
-
タイトルバーやメニューバーの...
-
Pivot table で集計されたデー...
-
エクセルマクロ PDF出力、CSV出力
-
VBSでHPを保存するにはど...
-
AccessVBAでレポートをPDFで出力
-
htmlから取り込んだ を消...
-
ASPでファイルを保存するダイア...
-
VBScriptでのSaveAsについて
-
CFileDialogで保存したい
おすすめ情報