電子書籍の厳選無料作品が豊富!

こんにちわ

今名簿が検索できるスクリプトを作っているのですがページ処理が上手くいきません。

名簿の総登録数は250~300になる予定なので、検索結果を10件ごとに分けたいんです。

可能な限りシンプルな構造で作りたいです。

複数のパターンを試しているのですがどうも上手くできません。

よろしくお願いします。

A 回答 (5件)

あまりいい方法ではないんですが、他にパッと思いつかないんで、



foreach $hairethu (@hairethu[($start ... $end)])
{($namae,$jusyo,$denwa,$nenrei,) = split(/,/,$line);
とするのでなく

$i=0;
foreach $hairethu (@hairethu){
<処理>
if(<検索キー>){
<処理>
$i++;
if($i<$start){next;}
elsif($i>$end){last;}
else{
print <表示>;
}
}
}
のような感じにするか(<処理>などは、その他必要な処理を入れてください。)、あらかじめ@hairethuに検索結果のデータを入れておくか(つまり2回ループさせる)だと思います。
どちらにしても、データ数が多くなった場合、結構負荷がかかります。総登録数250~300なら、そんなに問題にならないと思いますが。
    • good
    • 0
この回答へのお礼

ありがとうございます

参考にさせていただきます

お礼日時:2005/07/20 22:14

@hairethuの1番目の要素


つまり$hairethu[0]が1番目のデータになっていますか?
$hairethu[0]に何も入っていなくて、$hairethu[1]が一番目の要素になっている場合は、
$start = $form{"page"} * ($view) + 1;
$end = $start + $view;
です。

この回答への補足

上手くできました!!
ありがとうございます

それと後ひとつ問題があります…
先ほどの1というサイトと2というサイトと.....15というサイトがあったとします
ということが前提の話なのですが
15サイト中10件ヒットするキーワードで検索した場合
最初のページに7件しか表示されないんです

原因は1ページ目の検索対象が@hairetuの[0]~[9]までで次のページが@hairetuの[10]~[14]だからなのですが
何かいい方法は無いのでしょうか?

補足日時:2005/07/19 15:46
    • good
    • 0

#2です。



$start = $form{"page"} * ($view);
$end = $start + $view;

ここに問題がありますね。
これだと、1ページ目は、
$start=0
$end=10
2ページ目は、
$start=10
$end=20
となります。

$end = $start + $view - 1;
とすることで解決できると思います。

この回答への補足

試してみたのですが一番最初のページが
9件しか表示されませんでした…

それ以降のページは完璧なのですが

補足日時:2005/07/19 15:21
    • good
    • 0

DBはMySQL,PostgreSQLまたは、その他?



うまくいかないのはSQLの処理でしょうか?
Perlの処理でしょうか?

分けない場合の処理はうまく出来ているのでしょうか?

ページの移動処理はうまく出来ているのでしょうか?

もう質問内容を少し詳しくお願いします。
ソースを抜粋して載せてもらうとわかりやすいかもしれません。

この回答への補足

$view=10;

$start = $form{"page"} * ($view);
$end = $start + $view;

foreach $hairethu (@hairethu[($start ... $end)])
{($namae,$jusyo,$denwa,$nenrei,) = split(/,/,$line);

こんな感じです

補足日時:2005/07/19 15:06
    • good
    • 0

何がうまくいきませんか?


具体的なことでないと回答がしづらいので、
質問を整理してみてはいかがでしょうか。

この回答への補足

えっとですね、良く検索エンジンで次の10件とかってありますよね?

それをしたいんです。自分なりに試しているのですが…

例えば1というサイトと2というサイトと3というサイトと.....15というサイトがあったとします

それらに共通するキーワードで検索すると全てヒットして、1~10が表示されます
ですが次のページになると10~15が表示されてしまいます
つまり10が二回出てしまいます

forをつかって作りたいのですが本当にプログラミングを始めたばかりなので簡単な構成で作りたいです

補足日時:2005/07/19 14:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!