KENT-WEB サポートコーナー 過去ログ [ 0043 ]


記事No: 15754
投稿日: 2018/01/21(Sun) 15:06:47
タイトル項目を追加したい
ID情報: sasaki77
投稿者: nao
URLhttp://www.wanted-japan.com/patio/patio.cgi?mode=form

patio掲示板にて、新規スレッド作成 の項目に『懸賞金』を追加したいのですが。
何処を追加し、又は変更したらいいのかご教授願います。
宜しくお願いします。


記事No: 15755
投稿日: 2018/01/22(Mon) 14:16:43
タイトルRe: 項目を追加したい
ID情報: hirayama
投稿者: hirayama
URLhttp://shade-search.com/sts/term/term.php

WEB PATIOはログファイルの形式が複雑で、ログフォーマットの変更も想定されていないと思うので、意外と面倒です。

tmplフォルダ内のform.html、bbs.html、edit.html、read.htmlなどのテンプレートファイル複数、regist.cgiのログ登録処理部分複数か所、patio.cgiのログ読み取り後のデータ処理
など複数ファイルの相当あちこちを編集しないといけないとおもいます。
それと、懸賞金の投稿は親記事だけの表示ということになるとおもうので、親記事と子記事のデータ処理を分ける必要もあるかもしれません。

form.htmlはすでに編集済みのようですが、懸賞金入力フォーム部分は

<td><input type="text" name="sub" size="35"></td>

ではなく

<td><input type="text" name="prize" size="35"></td>

のようname=""の項目名を変えないと、懸賞金のつもりで入力した内容がタイトルとして保存されてしまいます。
regist.cgiの変更は、たとえば

print OUT "0<>$in{sub}<>$name<>$in{email}<>$in{comment}<>$date<>$host<>$pwd<>$in{url}<>$in{mlo}<>$au{id}<>$time<>$ex{1},$w{1},$h{1}<>$ex{2},$w{2},$h{2}<>$ex{3},$w{3},$h{3}<>\n";

のようにログ書き込みを行う部分を、たとえば

print OUT "0<>$in{sub}<>$in{prize}<>$name<>$in{email}<>$in{comment}<>$date<>$host<>$pwd<>$in{url}<>$in{mlo}<>$au{id}<>$time<>$ex{1},$w{1},$h{1}<>$ex{2},$w{2},$h{2}<>$ex{3},$w{3},$h{3}<>\n";

のように書き換えます。これは複数箇所あると思います。
ログを読み込んで表示するpatio.cgiの方はたとえば

my ($no2,$sub,$nam,$eml,$com,$date,$ho,$pw,$url,$mlo,$myid,$tim,$up1,$up2,$up3) = split(/<>/, $par);

のように読み込んだログから各値を抽出する部分を、変更したフォーマットに合わせて

my ($no2,$sub,$prize,$nam,$eml,$com,$date,$ho,$pw,$url,$mlo,$myid,$tim,$up1,$up2,$up3) = split(/<>/, $par);

のように変更します。こういう部分も複数か所あると思います。
さらに取り出した懸賞金$prizeの値を反映するためには、あらかじめテンプレートファイルのread.html内の懸賞金額を表示したい部分に

!prize!

のような文字を入れておいた上で、
patio.cgiの文字置き換え処理部分に

$tmpl =~ s/!prize!/$prize/g;

を追加する。
という感じになると思います。

なお、ログフォーマットの変更ですが、既存のフォームから投稿されたログがすでにあり、それも正しく表示させたい場合は、新たな項目は最後尾に追加させた方がいいですが、
最初から変更する場合は、上記の例のようにフォームの並びにあわせて前の方に持ってきても問題ないと思います。


記事No: 15756
投稿日: 2018/01/22(Mon) 14:48:08
タイトルRe^2: 項目を追加したい
ID情報: sasaki77
投稿者: nao

hirayama様
本当に有り難う御座います。
また、安易な考えで投稿した事を後悔しております。
しかしながら、何とか時間がかかっても頑張ります。
まず一つ、知恵を頂きたいのですが...

patio.cgiの文字置き換え処理部分に

$tmpl =~ s/!prize!/$prize/g;

を追加する。

と、ありますが、この追加記載は一カ所でしょうか?
それとも、何カ所になるのでしょうか。
その正解数によって、変更する場所を特定出来るのですが。

よろしくお願いします。






> WEB PATIOはログファイルの形式が複雑で、ログフォーマットの変更も想定されていないと思うので、意外と面倒です。
>
> tmplフォルダ内のform.html、bbs.html、edit.html、read.htmlなどのテンプレートファイル複数、regist.cgiのログ登録処理部分複数か所、patio.cgiのログ読み取り後のデータ処理
> など複数ファイルの相当あちこちを編集しないといけないとおもいます。
> それと、懸賞金の投稿は親記事だけの表示ということになるとおもうので、親記事と子記事のデータ処理を分ける必要もあるかもしれません。
>
> form.htmlはすでに編集済みのようですが、懸賞金入力フォーム部分は
>
> <td><input type="text" name="sub" size="35"></td>
>
> ではなく
>
> <td><input type="text" name="prize" size="35"></td>
>
> のようname=""の項目名を変えないと、懸賞金のつもりで入力した内容がタイトルとして保存されてしまいます。
> regist.cgiの変更は、たとえば
>
> print OUT "0<>$in{sub}<>$name<>$in{email}<>$in{comment}<>$date<>$host<>$pwd<>$in{url}<>$in{mlo}<>$au{id}<>$time<>$ex{1},$w{1},$h{1}<>$ex{2},$w{2},$h{2}<>$ex{3},$w{3},$h{3}<>\n";
>
> のようにログ書き込みを行う部分を、たとえば
>
> print OUT "0<>$in{sub}<>$in{prize}<>$name<>$in{email}<>$in{comment}<>$date<>$host<>$pwd<>$in{url}<>$in{mlo}<>$au{id}<>$time<>$ex{1},$w{1},$h{1}<>$ex{2},$w{2},$h{2}<>$ex{3},$w{3},$h{3}<>\n";
>
> のように書き換えます。これは複数箇所あると思います。
> ログを読み込んで表示するpatio.cgiの方はたとえば
>
> my ($no2,$sub,$nam,$eml,$com,$date,$ho,$pw,$url,$mlo,$myid,$tim,$up1,$up2,$up3) = split(/<>/, $par);
>
> のように読み込んだログから各値を抽出する部分を、変更したフォーマットに合わせて
>
> my ($no2,$sub,$prize,$nam,$eml,$com,$date,$ho,$pw,$url,$mlo,$myid,$tim,$up1,$up2,$up3) = split(/<>/, $par);
>
> のように変更します。こういう部分も複数か所あると思います。
> さらに取り出した懸賞金$prizeの値を反映するためには、あらかじめテンプレートファイルのread.html内の懸賞金額を表示したい部分に
>
> !prize!
>
> のような文字を入れておいた上で、
> patio.cgiの文字置き換え処理部分に
>
> $tmpl =~ s/!prize!/$prize/g;
>
> を追加する。
> という感じになると思います。
>
> なお、ログフォーマットの変更ですが、既存のフォームから投稿されたログがすでにあり、それも正しく表示させたい場合は、新たな項目は最後尾に追加させた方がいいですが、
> 最初から変更する場合は、上記の例のようにフォームの並びにあわせて前の方に持ってきても問題ないと思います。


記事No: 15757
投稿日: 2018/01/22(Mon) 18:02:42
タイトルRe^3: 項目を追加したい
ID情報: hirayama
投稿者: hirayama
URLhttp://shade-search.com/sts/term/term.php

> patio.cgiの文字置き換え処理部分に
>
> $tmpl =~ s/!prize!/$prize/g;
>
> を追加する。
>
> と、ありますが、この追加記載は一カ所でしょうか?
> それとも、何カ所になるのでしょうか。
> その正解数によって、変更する場所を特定出来るのですが。

これはどこに懸賞金で投稿された内容を表示したいかによって変わってくると思います。
例としてあげたのは記事閲覧ページのテンプレートであるread.htmlの場合ですが、
返信フォームで懸賞金の額を変更したいということでなければ、read.htmlでの追加記載は1か所でいいと思います。

しかし、この懸賞金の額をスレッド一覧でも表示したいということなら、スレッド一覧のテンプレートbbs.htmlにも表示したい場所に
!prize!を追加し、bbs.htmlを読み込んで表示するpatio.cgiのsub bbs_list 内に
同様の置き換え処理を追加する必要があります。 この場合は

$tmp =~ s/!prize!/$prize/g;

のようになると思います。
それと忘れていましたが、ログがたまって過去ログに移行する際の処理も考えておかないといけないと思います。
過去ログへの移動はregit.cgi、そして過去ログの記事閲覧の場合は、テンプレートのpast.htmlに同様に!prize!を追加し、
patio.cgiのsub past_page内に置き換え処理追加です。


記事No: 15758
投稿日: 2018/01/22(Mon) 18:23:38
タイトルRe^4: 項目を追加したい
ID情報: sasaki77
投稿者: nao

『懸賞金』の項目追加希望の意図は。
人を捜してほしい方が、尋ね人の詳細、メルアド、懸賞金等を投稿します。

一般ユーザーが投稿を見た時に尋ね人詳細及び、懸賞金を確認出来るように。

という事です。


返信フォームで懸賞金の額を変更する等の要望はありません。


単に、新規スレッドの項目に「懸賞金」の項目があれば良いのです。


但し、過去ログへのアクセスの為にも。こちらへの変更箇所は必要です。





> > patio.cgiの文字置き換え処理部分に
> >
> > $tmpl =~ s/!prize!/$prize/g;
> >
> > を追加する。
> >
> > と、ありますが、この追加記載は一カ所でしょうか?
> > それとも、何カ所になるのでしょうか。
> > その正解数によって、変更する場所を特定出来るのですが。
>
> これはどこに懸賞金で投稿された内容を表示したいかによって変わってくると思います。
> 例としてあげたのは記事閲覧ページのテンプレートであるread.htmlの場合ですが、
> 返信フォームで懸賞金の額を変更したいということでなければ、read.htmlでの追加記載は1か所でいいと思います。
>
> しかし、この懸賞金の額をスレッド一覧でも表示したいということなら、スレッド一覧のテンプレートbbs.htmlにも表示したい場所に
> !prize!を追加し、bbs.htmlを読み込んで表示するpatio.cgiのsub bbs_list 内に
> 同様の置き換え処理を追加する必要があります。 この場合は
>
> $tmp =~ s/!prize!/$prize/g;
>
> のようになると思います。
> それと忘れていましたが、ログがたまって過去ログに移行する際の処理も考えておかないといけないと思います。
> 過去ログへの移動はregit.cgi、そして過去ログの記事閲覧の場合は、テンプレートのpast.htmlに同様に!prize!を追加し、
> patio.cgiのsub past_page内に置き換え処理追加です。


[検索ページ]