phpでデータリスト作成

このQ&Aのポイント
  • php+PostgreSQLでデータのリスト作成をしています。DB内にあるデータを条件に合うデータを30件ずつ表示させ、ページ切替をしています。
  • ページ切替のリンクが表示されるページ数を設定し、現在のページと同じページ数はリンクを表示しないようにしています。
  • ソースコードではデータを取得し、指定件数ずつ表示しています。また、ページ切替のためのリンクも作成しています。
回答を見る
  • ベストアンサー

phpでデータリスト作成

php+PostgreSQLでデータのリスト作成をしています。 DB内にあるデータを条件に合うデータを30件ずつ表示させ、ページ切替をしています。 10ページあると、ページ切替のリンクが、 1~10まで全て表示されます。 これを5ページ目まで+次ページ 前ページ 6 7 8 9 10 が表示 どのようにすればよいでしょうか? よろしくお願い致します。 現時点でのソースです。 **************************************************DB接続後 $sql = "select count(*) from entry_user"; $result = pg_query($sql) or die("Failed to execute SQL\n"); $row = pg_fetch_result($result,0,0); $ln = 30; if ($row%$ln == 0){  //表示する件数(MAX) $pn = floor($row / $ln); } else{ $pn = floor($row / $ln)+1;  } pg_free_result($result); $data = "entry_id,entry_time,company,dept,sei,mei,post1,post2,pref,address2,address3,email,entry_flag"; $sort_key = "entry_id"; //ソート対象フィールド $sort ="desc"; //ソート desc:降順 $sql1 = "select $data from entry_user order by $sort_key $sort limit $ln offset " . ($pnn-1)*$ln ; //SELECT文 $result1 = pg_query($sql1) or die("Failed to execute SQL\n"); $row1 = pg_num_rows($result1); for ($i = 0; $i < $row1; $i++){ $table[$i] = pg_fetch_row($result1,$i); } 一覧表示後(省略) //ここからページ切替作成 for ($n = 1;$n<$pn+1;$n++){ if($pn != 1){ if($n != $pnn){ print(" <a href=list01.php?pnn=" . $n . ">"); print($n . "</a> \n"); } else{ // ページ数が、現在表示しているページと同じで有ればリンクなし print($n . " \n"); }} else{ print("1\n"); }}

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • const
  • ベストアンサー率66% (12/18)
回答No.1

前後Aページ合計Bページのアンカーを表示するループ条件でしたら、B = 2 * A + 1として for($n = max($pnn - A - max($pnn + A - $pn, 0), 1), $i = 0; $i < B && $n <= $pn; $n++, $i++) でいいと思います。 前後2ページ合計5ページの場合: if ($pnn != 1 && $pnn > 2 + 1) print("<a href=list01.php?pnn=1>最初のページ \n"); for($n = max($pnn - 2 - max($pnn + 2 - $pn, 0), 1), $i = 0; $i < 5 && $n <= $pn; $n++, $i++) print(($n != $pnn) ? "<a href=list01.php?pnn=$n>$n</a> \n" : "$n \n"); if ($pnn != $pn && $n <= $pn) print("<a href=list01.php?pnn=$pn>最後のページ\n");

youchan1117
質問者

お礼

有り難うございました。教えて頂いた方法でうまく出来ました!!

関連するQ&A

  • php,postgreSQLについて

    こんにちわ。初めて投稿します。よろしくお願いします。 現在、postgreSQLで作ったテーブルのデータをつくり、検索フォームで指定した条件(この場合はお店のコード) を、指定先のページに表示させたいのです。 SQLに直接、表示させたいコード番号を入力すれば出るのですが、フォームに入力された値を変数として格納し、SQL文の中に自動にあてはめる方法がわかりません・・。 どうかよろしくお願いします。 phpは4.1です。inp_store_cdは検索フォ-ムでのinput名です。 *表示画面 <?php $conn = pg_connect ("host=localhost port= 5432 dbname=test ); if ($conn == false) { print("データベースに接続できませんでした。"); exit; } $sql = "select * from store_basic where store_cd=$_POST["inp_store_cd"]"; if (!empty($inp_store_cd)) { $sql = $sql. "and sotre_cd =" .$_POST["inp_store_cd"]; } $result = pg_exec($sql); // selectを実行 if ($result == false) { printf("SQL:\"$sql\"の実行に失敗しました。"); exit; } $rows = pg_numrows($result); // 行数を取得 $columns = pg_numfields($result); // 列数を取得 print("<table border>\n"); for ($j = 0;$j < $rows;$j++) { if ($j == 0) { print("<tr>"); for ($i = 0;$i < $columns;$i++) { $str = pg_fieldname($result,$i); // 列名の取り出し print("<th>$str</th>"); } print("</tr>\n"); } print("<tr>"); for ($i = 0;$i < $columns;$i++) { $str = pg_result($result,$j,$i); // データの取り出し print("<td>$str</td>"); } print("</tr>\n"); } pg_freeresult($result); // 検索結果の解放 print("</table>\n"); ?>

    • 締切済み
    • PHP
  • PHPロジックで・・・

    PHP4をHTMLに埋め込むロジックを書いてます。 DBはpostgresqlです。 <? print("<SELECT NAME=sendgroup>"); print("<option value=name>グループ一覧"); for($i = 0; $i < row; $i++){ $str = pg_result($res,$i,0); print("<option value=$str>$str"); } print("</SELECT>"); ?> DBから取り込んだデータをrow(行数)分まわして HTMLのセレクトオプション表示をしたいのですが 表れません。$strにDBから取り込んだデータが 入ってます。 普通にprint($str)データの値はちゃんととれています。 HTMLのselect文でなにか規約があるのでしょうか?

    • 締切済み
    • PHP
  • phpとpostgresでの条件処理

    phpでPostgresのデータベースに接続して3つのテーブルから以下のようにフォームでdata-1が あった時のリレーションを表示させたいと考えています。 $sql = "select data-1,data-2,data-3,data-4 from table1,table2 where data-1 = '$data-1' and data-2.table1 = data-4.table2"; $result = pg_exec($sql); $rows = pg_numrows($result); $columns = pg_numfields($result); この時、data-1が空欄の場合は、row0がないのでエラーになります。data-1が空欄の場合もあるので 空欄の場合は処理を分けるようなことができるのでしょうか。

    • ベストアンサー
    • PHP
  • PHPでのデータ表示画面⇒CSV出力について

    先日より質問に対しコメントありがとうございます。 教えていただいた内容と自分でやった結果3つのSQLでデータを出力し出力順を揃えた方法で表ができました。 これをCSV形式で出力したいのですがこのまま出力できるのでしょうか?それとも別途方法をとる必要があるのでしょうか。 自分の中で今ひとつまとまらないので改めて質問させていただきます。 ソースへの指摘併せコメントよろしくお願いします。 ※現ソース <HTML> <BODY> <?PHP //DB接続部省略 $sql="SELECT I.ITEM_ID,I.ITEM_NAME FROM ITEMS AS I,LIST AS L・・・(略)"; $sql2="SELECT A.SHOP_ID,A.SHOP_NAME,A.ITEM_NAME, IF(L.ITEM_ID=A.ITEM_ID,'○','') FROM・・・(略)"; $sql3="SELECT S.SHOP_ID,S.SHOP_NAME FROM SHOP AS S ・・・(略)"; $rs=mysql_query($sql,$db); $rs2=mysql_query($sql2,$db); $rs3=mysql_query($sql3,$db); $line=mysql_num_rows($rs); $line2=mysql_num_rows($rs2); $line3=mysql_num_rows($rs3); print("<TABLE border=1>"); print("<TR>"); print("<TD>店舗名</TD>"); for($i=0;$i<$line;$i++) { $row=mysql_fetch_row($rs); print("<TD>".$row[1]."</TD>"); } print("</TR>"); print("<TR>"); for($i=0;$i<$line3;$i++) { $row3=mysql_fetch_row($rs3); print("<TD>".$row3[2]."</TD>"); for($j=0;$j<$line;$j++) { $row2=mysql_fetch_row($rs2); if($row2[3] == "") { print("<TD width=25> </TD>"); } else { print("<TD width=25>".$row2[3]."</TD>"); } } print("</TR>"); } print("</TABLE>"); mysql_free_result($rs); mysql_free_result($rs2); mysql_free_result($rs3); mysql_close($db); ?> </BODY> </HTNL>

    • ベストアンサー
    • PHP
  • チェックボックスの使用

    PostgreSQL+PHP初心者です。 DBから登録者一覧を抽出し、CheckBoxでチェックしたものだけ 修正をします。 DBから抽出し、テーブルを作成するところまでは出来ました。 その後CheckBoxのチェック済みだけを修正する場合はどうすればいいですか? ↓現在のソースです。 <html> <head> </head> <body> <FORM NAME="form1" action="insert.php" method="post"> <? $hostname="svibm01"; $con = pg_connect("host=$hostname dbname=testdb user=testuser password=testuser"); if(!$con) { print "データベースに接続できませんでした.\n"; exit; } $sql = "select * from name"; $rtn = pg_exec($con, $sql); if(!$rtn) { print "テーブルの検索に失敗しました.\n"; pg_close($con); exit; } $m = pg_numrows($rtn); $n = pg_numfields($rtn); print "<table border>\n"; print "<tr>\n"; print "<th> </th>"; $i = 0; while($i < $n) { print "<th>".pg_fieldname($rtn, $i)."</th>\n"; $i++; } print "</tr>\n"; $j = 0; while($j < $m) { $i = 0; print "<tr>\n"; print "<td align=center><input type=checkbox name=check".pg_result($rtn, $j, $i)." value=".pg_result($rtn, $j, $i)."></td>"; while($i < $n) { print "<td align=center>".pg_result($rtn, $j, $i)."</td>\n"; $i++; } print "</tr>\n"; $j++; } pg_close($con); print "</table>"; ?> <br> <br> <input type="submit" name="add" value="追加" /> <input type="submit" name="upd" value="変更" /> </FORM> </body> </html>

    • 締切済み
    • PHP
  • htmlとphpの分離

    お世話になります。 ビジュアルをcssで調整するために、htmlとphpの分離したいんですが、どう分ければいいか教えていただけませんか? ソースはこれです↓ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <link rel="stylesheet" type="text/css" href="base.css"> <title>ファイルのアップロードフォーム</title> </head> <body> <form enctype="multipart/form-data" method="post"> <input type="file" name="myfile" size="30"> <input type="submit" value="アップロード"> <?php //全てのエラー・警告を出力する ini_set('error_reporting', E_ALL); //アップするディレクトリ $uploads_dir = '../../file_manager/uploads'; //データベースに接続 $con = mysql_connect('','',''); mysql_select_db(""); //セットされているかのチェック if(isset($_FILES["myfile"]) and $_FILES["myfile"]["type"]=="application/pdf" and $_FILES["myfile"]["error"] == UPLOAD_ERR_OK) { $tmp_name = $_FILES["myfile"]["tmp_name"]; $name = mysql_real_escape_string($_FILES["myfile"]["name"]); $size = $_FILES["myfile"]["size"] / 1024; //テーブルに格納 $sql ="insert into t_pdf_manage (name,size,upload_time,modify_time,flg) values('$name',$size,now(),now(),1)"; mysql_insert_id(); mysql_real_escape_string($sql); $sql .=" on duplicate key update size=$size,modify_time=now(),flg=1"; $result=mysql_query($sql,$con); //テーブルからidを抽出 $sql ="select id from t_pdf_manage where name='$name'"; $result=mysql_query($sql,$con); //添字配列でidを取得 $row=mysql_fetch_row($result); $up_name=$row[0]; //ファイル名をidにしてアップ move_uploaded_file($tmp_name, "$uploads_dir/$up_name"); } if(isset($_POST["del"]) and is_array($_POST["del"])) { $sql ="update t_pdf_manage set flg=0 where id in("; $flg=true; foreach($_POST["del"] as $val) { if($flg) {$flg=false;} else {$sql.=",";} $sql .="'".mysql_real_escape_string($val)."'"; } $sql .=")"; $result=mysql_query($sql,$con); } $sql ="select id,name,size,upload_time,modify_time from t_pdf_manage where flg=1"; $result=mysql_query($sql,$con); print "<table border=1>\n"; print "<tr>\n"; print "<th>名前</th>\n"; print "<th>サイズ(KB)</th>\n"; print "<th>アップロード</th>\n"; print "<th>更新</th>\n"; print "<th>表示</th>\n"; print "<th>削除</th>\n"; print "</tr>\n"; while($row=mysql_fetch_array($result,MYSQL_ASSOC)){ print "<tr>\n"; print "<td>".htmlspecialchars($row["name"])."</td>\n"; print "<td>".$row["size"]."</td>\n"; print "<td>".$row["upload_time"]."</td>\n"; print "<td>".$row["modify_time"]."</td>\n"; print "<td><a href=\"hyouji_test.php?id=" . $row["id"] . "\" target=\"new\"><img src=\"pdf.gif\"/></a></td>\n"; print "<td><input type=\"checkbox\" name=\"del[]\" value=\"".$row["id"]."\"></td>\n"; print "</tr>\n"; } print "</table>\n"; mysql_close($con); ?> <input type="submit" value="削除"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • 特定のデータだけををソートしたい

    POSTで渡されたデータの中から特定のデータだけを取り出しソートしたい。 例えばNo・名前・年齢のtextを数個表示してNoだけを抽出し、ソートして昇順にしたいのですが? print '<form name="form1" action="eee.php" method="POST">' . "\r\n"; for($i=0;$i<5;$i++){ print '<input type="text" name="N0'.$i.'">' . "\r\n"; print '<input type="text" name="Name'.$i.'">' . "\r\n"; print '<input type="text" name="Age'.$i.'">' . "\r\n"; } print '<input type="submit" value="送信">' . "\r\n"; print '</form>' . "\r\n";

    • 締切済み
    • PHP
  • sql.phpの作成

    vi sql.phpで <? $con = pg_connect("dbname=ishihara"); if(!$con){ print "DBへの接続に失敗しました!\n"; exit; }else{ print "DBへの接続に成功しました!\n"; } ?> というスクリプトをつくって ブラウザでテストしたところ <? $con = pg_connect("dbname=ishihara"); if(!$con){ print "DB�吾��・膓���け�����障����!\n"; exit; }else{ print "DB�吾��・膓����������障����!\n"; } ?> という風に出てしまいます。 これってphpがインストール不完全なのでしょうか?

  • PHPとMySQLについて

    PHPとMySQLについて PHP、MySQLともに初心者の者です。 ネットの情報を参考に以下のようなプログラムを作成しました。 <?php //ファイルを読み込み require_once("DB47.php"); // クエリを送信する $sql = "SELECT * FROM japanDB ORDER BY PREF_CD"; $result = executeQuery($sql); //結果セットの行数を取得する $rows = mysql_num_rows($result); //表示するデータを作成 if($rows){ while($row = mysql_fetch_array($result)) { $tempHtml .= "".$row["PREF_CD"]." ".$row["PREF_NAME"]." "; $tempHtml .= "\n"; } $msg = $rows."件のデータがあります。\n\n"; }else{ $msg = "データがありません。\n\n"; } //結果保持用メモリを開放する mysql_free_result($result); ?> <?= $msg ?> <?= $tempHtml ?> これはデータベースに 1、北海道 2、青森 ・  ・ ・  ・ ・  ・ 47、沖縄 といった情報を与えており、PHP側でMySQLに接続し、その内容をコマンドプロンプト上で表示するといったものです。 しかし、PHPプログラムを実行してしまうと、全データが一気に表示されてしまうので、見づらいものとなっています。 そこで、地名や番号を入力すれば、地名を表示するような検索機能を付けたいのですが、PHPからMySQLデータベース内を検索する方法が分かりません。検索機能をこのプログラムに組み込みたいのですが・・・。 どなたかご教授お願いいたします。 ***環境*** OS : Windows XP Pro PHP4.2.3 、MySQLインストール済み **********

    • ベストアンサー
    • PHP
  • PHP MySQL を使ってリストボックスを作りたい

    PHPで、MySQLよりSelectしたデータをリストボックスにしたくて、 コーディングしていますが、本を読みながら見よう見まねでつくってますが、 うまくいきません。 現象としては、IEで呼び出すと、一番上にrequireしたfanctionが そのまま記述されて出てきます。 そのほかは、その下にうまく表示されています。 lib.phpをinput1.phpで呼び出して使っています。 lib.php >------------------------------ function make_SyaName (){ $sql = "select * from Syain"; print $sql; $result = mysql_query( $sql ) ; while ( $syain = mysql_fetch_array ( $result ) ) { print "<option value=" . ${syain['SyaNo']} . ">" . ${syain['SyaName']} . "</option>"\n; } } >------------------------------ input1.php >------------------------------ 省略・・・ <select name="TanNo"><option value=>担当者<? make_SyaName () ?> ・・・省略 >------------------------------ 初歩的な質問で恐縮ですが、よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう