• ベストアンサー

DBを使用しないで「○件リスト表示&次のページへ」のやり方が・・・

初めまして。初心者です。 MySQLを使用した指定件数リスト表示のやり方はあったのですが、fopen等を使ってCSVやDATファイルでも同様のことが出来るのでしょうか? どなかたご教授くだされば幸いです。 宜しくお願いします。

  • PHP
  • 回答数6
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.6

こんばんは。 よく見たらあたりまえでした。 私のソースが間違っております。 print "<a href=\"?page=".($page++)."\">次のページへ</a>\n"; ですね。 あと、 $page=$_GET['page']; if ( $page == "" ) { $page = 0; } 取得したpageに何も入っていなかったら0にする必要があるかもしれません。

gonagona
質問者

お礼

出来ました! ありがとうございます!! print "<a href=?"?page=".($page++)."?">次のページへ</a>?n; ですが、ここを($page+1)としたら出来ました。 あとは教えていただいたとおり、 ページ数が存在する範囲内で「次のページへ」「前のページへ」を 表示すれば良いのですよね? 夜分までお付き合いいただき、ありがとうございました。 また色々と質問を書き込むかもしれませんが、 そのときはどうぞ宜しくお願いいたします。

その他の回答 (5)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.5

こんばんは。 動かないというと、何かエラーが表示されていますか? または、単に表示されていないのでしょうか。 チェック方法はいろいろあるでしょうが、 たとえば、page=-1は無いでしょうし、 page=最大ページ数より上の表示も出来ないはずです。 最大ページ数=取得したレコード数/1ページの最大表示数 2つの範囲外の場合は存在しないページになるので リンクの表示は行わず、 範囲に相当する場合はリンクを表示します。

gonagona
質問者

お礼

度々ご回答ありがとうございます。 40行くらいのデータがありますが、 10件表示で2ページ目(11~20)から表示ができません。 「次のページ」を押しても「?=」の後にページ番号 が付いてこないのです。 http://xxx/test/index.php?= となってしまい、表示結果も1ページ目のままです。 直接URLに「?page=2」等と入力すると 正常に2ページ目が表示されました。 何度もお手間を取らせてしまいすみません。 よろしくお願いします。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.4

こんばんは。 まずあちらで説明しているpageとは現在表示している ページが何ページであるかをあらわす変数です。 たとえば質問を参照する際に、URLの最後にq=xxxxx というものがあると思います。 xxx.php?q=xxxxxとすることにより、各質問を取得しています。 それと同じ方法でxxx.php?page=1とすると1ページ目 page=2とすると2ページ目を取得するようになります。 取得するようになると言っても、受けるPHPでその値を 取得してあげなければいけません。 $page = $_GET['page']; とすることで$pageにpage=xの値が入ってきます。 ================================================ <?php  // 1ページに表示する最大数  $max = 10;  // 現在のページ数を取得  $page = $_GET['page'];  // ファイルを配列に格納  $rec = file("sample.csv");  // 現在のページに該当するインデックスから  // そのページの範囲までを出力  for ( $i = $page*$max; $i < $page*$max+$max; $i ++ ) {   print $rec[$i];  }  print "<a href=\"?=".($page++)."\">次のページ</a>\n"; ?> ============================================= forの部分でpageの値を使用して動的に表示する 配列の範囲を変えています。 最後のprint文で次のページへのリンクを出力しています。 現在のページ+1で次のページへの遷移を行っています。 但し、上の処理では次のページがあるか、前のページの表示処理は行っていません。 前のページでしたら現在のページ-1になります。 次のページがあるか、前のページがあるかをチェックし、リンクの表示を行います。 (チェックしないとエラーにもなります)

gonagona
質問者

お礼

丁寧なご回答本当にありがとうございます。 ソースをコピペして、1ページ目の10件分の 取得は出来たのですが、「次のページ」のリンクが 正しく動いてくれません。 > 次のページがあるか、前のページがあるかを > チェックし、リンクの表示を行います。 とありますが、if文でチェックを行うところまでは 分かるのですが、その先が… 度々恐縮ですが、宜しくお願いいたします。

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.3

$fileopen=file("sample.csv"); とすれば、sample.csvの内容を配列$fileopenに取り込めます。 そうすれば、行数はsizeof($fileopen)で取得出来ます。

gonagona
質問者

お礼

ご回答ありがとうございます。 しかし、sizeof()で取得した値を どうのように1ページ分(例えば10件)として 区切り、次ページへと繋げていけばよいのでしょうか…? 良く見かけるのが、xxxxx.php?page=2 などですが、この「?」は何々でしょうか…? 初心者で恐縮ですが、お時間ありましたら またご回答をお願いいたします。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんばんは。 http://okweb.jp/kotaeru.php3?q=1173009 を参照してみて下さい。 MySQLの場合は多分SQLのlimitを使用して検索を 絞ってるものを見かけたのと思います。 上のアドレスの回答はJavaの構文になってますが PHPになっても処理の概要は同じになります。 ファイルの1レコードを配列に入れて 指定されたインデックスを読み出せば、 いいと思います。

gonagona
質問者

お礼

スミマセン。 レスの仕方を間違っておりました。。 「回答に対する補足」に自分でレスしてました。

gonagona
質問者

補足

早速のご回答、ありがとうございます。 上記URL拝見させていただきました。 > page(現在のページ数)をgetなりpostで取得する このやり方が分からないのですが、 pageという関数があるのでしょうか? それとも変数で作るものなのでしょうか? 現在、下記の構文を作るのが精一杯のレベルです・・・ <?php $fp = fopen ("sample.csv", "r"); while (!feof($fp)) { $line = fgets($fp); $lines = explode(",",$line); print $lines[0]. "<br>\n"; } fclose($fp); ?> 事前に勉強しなければならないような項目が あれば、そちらもお教えいただけると助かります。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

MySQLの検索結果を配列に読み込んだりして、指定した場所の件数を表示しているなら ファイルの一行を配列に読み込めば同じやり方でできますよね

gonagona
質問者

お礼

スミマセン。 レスの仕方を間違っておりました。。 「回答に対する補足」に自分でレスしてました。

gonagona
質問者

補足

早速のご回答ありがとうございます。 すみません、言葉が足りませんでした。 MySQLでの表示方法が「この掲示板に載っていた」、ということで、当方MySQLの関数が全く読めません・・・ ですので、DBを使用しないで同様の処理が出来るかお聞きしたかったのです。 お手数ですがお時間ありましたら、 またご回答をお願いいたします。

関連するQ&A

  • 「○件リスト表示&次のページへ」と表示させたいのですが・・・

    Web上でPOP3に接続して新着メールを確認するプログラムを作成しています。 受信したメールの一覧を表示させるのではなく、1ページに表示する件数を指定して、件数が多い場合は次のページへといったように表示させたいのですが、プログラムの作成方法がわかりません。 OSはwindowsXP PHP5を利用しています。 どなかたご教授くだされば幸いです。 どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのデータをCSVファイルに保存

    PHPで入力された情報を、CSVファイルに保存したいのですがうまくいきません。 $list=array($name,$jyusyo,$mail,$tel,$text); $fp=fopen('dat/dat.csv','a+'); foreach($list as $line){ fputcsv($fp,split(',',$line)); } fclose($fp); ウェブで調べてこのような形のものを作成してはみたんですが、 エラーが出てしまいます。CSVファイルに保存したい時は、 CSVファイルを先に作るべきなのでしょうか?そうでしたら、 作成の仕方を教えていただきたいです。 初心者ですがよろしくお願いします。

    • 締切済み
    • PHP
  • リストボックスの再表示

    プログラミング初心者です。 あるページ内において、 日本地図の画像ファイルとリストボックスが有ります。 データベース(MySQL)より都道府県名を取得してくる仕組みなのですが、はじめはリストボックスには全都道府県名を表示するようにします。 そこから、例えば、日本地図より、東北地方を選択(画像内をクリック)すると、東北地方にある県名だけをリストボックスに再表示させたいです。 実現方法を教えて下さい。お願いいたします。

  • 「次の○件」(ページ分割?)の方法

    お世話になります。 php4とMySQLで検索システムを作っているのですが、検索結果を一定件数づつ表示する方法を探しています。 Limitを使えばいいらしいことは分かったのですが、 (例えば、5件づつ表示したい場合には 「Limit △ 5」とか。) ただ、この△の部分の式がどうしたらよいのかわからないのです。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 検索とレコード数(CSVファイルより)

    PHP初心者です CSVファイルを参照して 項目で検索 検索した内容のレコード数(件数)を 表示させる関数(方法)を教えて頂きたいです 今までMysqlで操作していたのですが CSVファイルに変わって 困ってしまいました よろしくお願いします

    • 締切済み
    • PHP
  • ウォッリストの件

    ヤフーオークションのウォッリストが1000件を越え使用できなくなりましたが 画面上では登録件数は36件となっており、 1000件も登録した覚えはないのですが、どうしたものか?

  • ページが完全に読み込まれるまでNowLoadingを表示したい

    フレームで分割したページがあり、このページでCSVやテキストデータの取込みを行っています。 取込むデータを一度画面表示しているのですが、取り込む件数が多いと時間がかかってしまうので、 処理中に「Now Loading...」などの言葉を表示させたいのですが何も表示されません。 header.asp(取り込むファイルを指定) footer.asp(取込みファイルを画面表示) ↓ここのページを参考にしたのですが、フレーム分割されているのでonloadが機能していない? http://www.openspc2.org/reibun/JS_TipsAndTricks/etc/010/index.html フレームで分割されたぺーじでも同じような処理をさせるにはどうしたらよいでしょうか? よろしくお願いします。

  • ページが表示されない

    CSVダウンロードができるページを作っています。 ブラウザはIE6を使用しています。 ボタンを押下するとCSVファイルがダウンロードできます。 CSVファイル作成中はボタンをdisabledにして、作成が終了すると再び元の画面に遷移させているのですが、ページが表示されなく真っ白になってしまうことがあります。 ソースを表示させるときちんとHTMLのソースが表示出来るのですが、画面上は出てきてません。 デバッグしてみてもきちんとソースは最後までいきます。 原因がわからなくて困っています。 宜しくお願いいたします。

  • データベースサーバーにあるデータをWebページで表示したい

    ロリポップを使っています。ロリポップは専用のデータベースサーバー(WEBページのサーバーとは別)とMySQLがすぐ使えるので、MySQLでcsvファイルからデータを入力しました。 検索結果を、WEB上に表の形で表示をさせたいのですが、どうすれば良いのでしょうか? PHPを使えばいいらしいと言うことぐらいしかわからない初心者です。昨日丸一日ネットで調べましたがよくわかりません。 おすすめの書籍とか、おすすめのホームページ、サンプルのあるサイトなどを、教えて頂けませんでしょうか?

    • ベストアンサー
    • PHP
  • ページ表示について

    sea_clear_sky8です。 環境 PWS Windows98SE MYSQL4 mysql接続し、mysqlの値を1ページに10個ずつ、ページを分けて 表示させたいのですが、作る考え方が浮かびません。 次へボタンで、次の10個を表示させたり、 前へボタンで、前の10個を表示させたりしたいです。 現在はmysqlに接続し、mysqlの値を<INPUT TYPE="TEXT> に入れて表示させることまではできています。 作り方の参考になることなら、なんでもいいので ご教授願います。 作るのに必要なASPメソッド等を教えて頂けたら有難いです。 どうかよろしくお願いします。

専門家に質問してみよう