• 締切済み

ページ送りするには

データ数が「$data = 300」ある時などにページ送りのリンクを 1ページに30データとして10ページ分のリンクが必要ですが 一度に10ページのリンクを作らず、 1 2 3 4 5 >次へ 前へ< 6 7 8 9 10 という様なページ送りを表示したいのですが分からないので困っています。お願いします。

  • k_7
  • お礼率44% (4/9)
  • Perl
  • 回答数2
  • ありがとう数2

みんなの回答

回答No.2

use strict は、安全でない構文に警告を出してくれます。 そのまま外して構いません。コード自体に変更はいりませんよ。 下記のスクリプトの foreach の中身だけ、処理を書き換えてください。

k_7
質問者

お礼

お手数かけましたが使用中のものを いじっていたら、何とかできました。

k_7
質問者

補足

ありがとうございます。 現在は下のようなものを使っています。 open FILE,$logfile; @logdat = <FILE>; close FILE; $data = int((@logdat - 1)/30) + 1; ($in{'page'} >= 1 and $in{'page'} <= $data) or $in{'page'} = 1; foreach$l(0..$#logdat){ $l >= ($in{'page'} - 1) * 30 and $l < $in{'page'} * 30 and $log .= $logdat[$l]; } foreach$p(1..$data){ if($p == $in{'page'}){ $pagelink .= <<"EOT"; <b>$p</b> EOT }else{ $pagelink .= <<"EOT"; [<a href="$mycgi?page=$p">$p</a>] EOT } } 現在はデータの数が多いとその分数だけリンクが作成されてしまいます。50でも100でも・・・

回答No.1

説明が難しいので、少し表を用意してみます。   ページ番号  +------------------  | 1 2 3 4 5 階| 6 7 8 9 10 層| 11 12 13 14 15  | 16 17 18 19 20 まず、ページ番号を割り出す必要があります。 $data が 300 で、30件ずつの表示ならば、10ページ目の“最後”ですね。 そして、上の表で見れば分かると思いますが、 階層としては2番目ということになります。 ページ番号を、並べる数である 5 で割れば階層が分かりますね? 割り切れなかった場合は、小数点以下を切り捨てた数値に1を足せば割り出せるということも想像がつくでしょう。 これは、ページ番号を割り出す際も同じです。 30 件で割って余りが出る結果はページの範囲を超えているので1を足す必要があります。 階層の開始番号は、前の階層の終了番号+1になるので、 (階層-1) * 5 + 1 という感じでしょうか。 今、即興で考えたので間違えているかも知れませんが、 こんな感じの考え方で実装できると思います。 use strict; my $data = 300; my $page = $data % 30 ? (int($data/30)+1) : $data / 30; my $layer = $page % 5 ? (int($page/5)+1) : $page / 5; my $offset = ($layer-1) * 5 + 1; foreach my $num ($offset..$offset+5-1) { if ($num == $page) { print "now: $num\n" and next } print "$num\n"; }

k_7
質問者

補足

ありがとうございます。 use strict; を 使わない方法もあるのでしょうか?

関連するQ&A

  • ページ送りについて

    こんにちは。 MySQLのデータを利用してラベル印刷を行おうと思っています。 その際に、1ページ目は印刷のスタート位置を任意で選び、2ページ目 以降は1ページ目の次のデータから最後までというようにしたいのですが 処理をどうしたらよいかわからなくなって来たので、質問に参りました。 ----- |0|1|2| ----- |3|4|5| ----- |6|7|8| ----- ↑こんな感じのフォームからラジオボタンで1ページ目のスタート位置を 選ぶようになっています。(数字はvalueとなってます) 「04」を選んだ場合は、00~03の枠は空白で埋めて「08」までの分の ラベルを表示します。次のページ以降は「00」の位置に残りのデータを… という風にしたいのですが… 1ページ目の表示にあたる処理は何となく出来てはいるのですが 2ページ目以降をどういう風に考えればよいのかわかりません。。。 どなたか知恵を貸して下さい。宜しくお願いします!

    • ベストアンサー
    • PHP
  • PDFのページ送りの仕方

    こんにちは。 PDFを画面に表示させて原稿を起こす事があり、 現状ではページを送るのに一度ペンを置いて、 マウスでスクロール、あるいはページ送りの ボタンを押してまたペンを持って、ということを 繰り返しています。 PDFのスクロール、あるいはページを送るのに、 ワンタッチのボタンで次のページを表示することは できるでしょうか? できれば、フットスイッチなど足で自由にページ送り、 ページ戻りなどができるとありがたいのですが。 どうぞよろしくお願い致します。

  • Kindleのページ送りの方法について

    Kindleで一部の小説は添付画像左画面のような表示でスムーズにページ送りが出来るのですが他の小説や漫画等は右画面のような表示でしかページ送りが出来ません 全ての書籍を左画面のような仕様でページ送りが出来るようにする事は可能ですか?​

  • ごちゃまぜRSSリーダーにページ送りをつけたい

    ごちゃまぜRSSリーダーを使っています。 http://www.vector.co.jp/soft/unix/net/se334908.html これに、ページ送りをつけたいと思い、レッツPHP!さんの簡易ページャーをつけました。 http://php.s3.to/simple/ ですが、意図したとおりに動きません。 RSS10件ごとにページを送りたいのですが、以下のコードを張ってみたところ、RSSが全件表示され、その下に、ページ送りが表示されます。 10件ごとにページ送りするためにはどのようにしたらよいのでしょうか?

    • 締切済み
    • PHP
  • Ajaxでの、任意の件数でページ送りをするには?

    <ul>で定義したリスト項目を、任意の件数で区切ってページ送りを実装しようと思っています。 <li>が50件くらいあって、それをn件ずつ実体を表示し、 1ページ目、2ページ目……とリンクを作ってページを切り替える。 表示件数nはユーザーには選ばせず、制作側がきめた件数で固定。 このような動作を実装するのに参考になるサイト、サンプルなど ありましたら、ご教示いただければと思います。 よろしくお願いします。

  • webサイトのページ送り機能について

    webサイトのページ送り機能について教えて下さい。 表示コンテンツが大量にある場合で(100件以上)、例えば1ページに10件ずつ表示させ、サイトの下部に[1][2][3]・・次のページへなどを設定させるにはどのようにしたら良いのでしょうか?また、定期的に新規のコンテンツが追加されていくので、1ページ目から順次追加されるようにしたいです。 初心者ですので参考サイトやサンプルなどでも構いませんが、若干、解説をして頂けると助かります。 恐れ入りますが、ご回答宜しくお願い致します。

  • phpのページ送りについて

    既出の質問で大変恐縮ですが、どうしても自分の理解力が足りないため、教えてください。 phpでページ送りの機能をつけようと思います。 100件だけ取り出して、あとを 前のページへ|1|2|3|…|次のページへ のようにするのはどうしたらよいのでしょう。 いま組んでいるベースを書きます。 初心者で勉強をしているのですが頭が悪く、できれば下記に合わせて作っていただけますと幸いです。 ================================================================================== $sql2 = "select * from creater"; $result2 = mysql_query($sql2); $rows2 = mysql_num_rows($result2); if($rows2 == 0){ echo "<p>該当データがありません。</p>"; } else { while($row2 = mysql_fetch_array($result2)){ echo "<p><a href=\"creater.php?createrid=",$row2["createrid"],"\">"; echo $row2["creater"]; echo "</a>"; echo "</p>"; } } ================================================================================== 実際のページは ttp://www.game-minzoku.jp/all-creater2.php です。 何とぞ、よろしくお願いいたします。

    • 締切済み
    • PHP
  • Movable Type 5のページ送りに関して

    Movable Type 5のページ送りに関して Movable Type 5のテンプレートをいじっています。 記事表示などは一通り完成したので、 カテゴリー一覧、ページ一覧、日付一覧ページのエントリーの下部にページ送りを設置したいと思い、いろいろなサイトを調べて スカイアークさんのプラグイン PageBute をインストールしました。 http://www.skyarc.co.jp/engineerblog/entry/2642.html インストールして張り付けたところエラーは出ないものの表示がされないようです。 よく見てみたら、システム側にはプラグインが認識されているようですが、 ブログ内ではPageButeが認識されていないようです。(一覧に出ていないです) プラグインを利用するためには、アップロード以外に何か特殊なことを行わないといけないのでしょうか。バージョンはMT5に対応しているようなのでよくわからないです。 よろしくおねがいします。

  • リモコンのページ送りができない

    プロジェクターEB-935Wの機種です。 パワーポイント使用してリモコンの「ページ送り」ができません。ポインターやズームは使えます。何か設定が必要なのでしょうか。講習会で使用しなければなりません。教えてください ※OKWAVEより補足:「EPSON社製品」についての質問です。

  • ASPでSQLデータ表示の際のページ機能について

    現在、IIS+ASPでSQLServerのデータを参照するという極めて単純なWebアプリを 作成しております。 今回のWebアプリには「前へ」リンクと「次へ」リンクを付けてページ機能を 持たせます。1ページ1レコードです。 そこでひとつ問題点が発生しまして皆さんにご質問させて頂きました。 まず簡単にWebアプリ仕組みを申しあげますと、 ・「前へ」のリンクのURLの引数には現在のレコード位置-1の値を追加する。 ・「次へ」のリンクのURLの引数には現在のレコード位置+1の値を追加する。 ・ページを表示する時に取得したレコードセットに対して上記引数分の  MoveNextを行う。 ・データを表示する。 そこで気になるのが、レコードが追加されたり、削除されたりした時に シーケンスがずれてしまう現象が予測されるというところです。 例えば現在表示しているレコードより前のデータがページ表示後に消された場合、 「次へ」をクリックすると、ひとつレコードが飛ばされてしまいます。 あるいはページ表示後に現在表示しているレコードより前にデータが追加された場合、 「次へ」をクリックすると、再度同じレコードが表示されてしまいます。 こういった状況を防ぐには、一般的に皆さんはどのような手法を用いられるの でしょうか。 どうか知恵をお貸し下さい。宜しくお願い致します。

専門家に質問してみよう