投稿者 |
メッセージ |
|
< PHPプログラミング ~ 次の10件、前の10件 |
|
時間:
土 8月 11, 2007 5:15 am
|
|
|
登録日: 2006年7月 30日
投稿記事: 8
所在地: 埼玉県
|
|
お久しぶりです。
当方、MySQLを使用したデータベースシステムを開発しております。
仕組みはいたって単純なもので、ユーザーからの要求をSQL文へ書き換え、発行し結果を表示させるだけのものです。
結果を表示させるところまでは何の問題もなく、行きました。
が、題名どおり「次の10件」、「前の10件」へのリンクをどう作ろうか迷っております。
表示用のコードは以下のようになっております。
Code: |
<table border="1">
<tr><td>ID</td><td>data1</td><td>data2</td><td>data3</td><td>data4</td><td>data5</td></tr>
<?php
$limit = 10;//10件まで
for($i = 1; $i <= $limit; $i++){
$line = mysql_fetch_array($res);
?>
<tr>
<td><?php echo $i;?></td>
<td><?php echo $line['dat1']; ?></td>
<td><?php echo $line['dat2']; ?></td>
<td><?php echo $line['dat3']; ?></td>
<td><?php echo $line['dat4']; ?></td>
<td><?php echo $line['dat5']; ?></td>
</tr>
<?php
if($i == $rows){// 検索結果が$limit以下。
break;
}
}
?>
|
SQLのデータの方は、単純に data1,data2,data3.data4,data5と入っており、データ順を示す番号は登録されておりません。
このような場合、次の10件などのリンクを表示させるためにはどうしたらいい物でしょうか?
ご教授願えると幸いです。 |
_________________ まだまだPHP初心者。
よろしくお願いします。 |
|
|
|
|
|
|
時間:
月 8月 13, 2007 7:05 pm
|
|
|
登録日: 2007年8月 08日
投稿記事: 5
所在地: 愛知県名古屋市
|
|
LIMIT CLAUSE 使って。
たとえば
SELECT field1, field2, FROM table_name LIMIT 0,10;
LIMIT 0,10 [ LIMIT A, B ]
A -> 初め [start point]
B -> 量
0 から、10の量
Code: |
SELECT field1, field2, FROM table_name LIMIT 0,10;
|
11 から、10の量
Code: |
SELECT field1, field2, FROM table_name LIMIT 11,10;
|
|
_________________ まだまだ。馬鹿外人。。。 |
|
|
|
|
|
|
時間:
日 9月 23, 2007 1:47 pm
|
|
|
登録日: 2007年9月 23日
投稿記事: 3
所在地: Tokyo
|
|
ページング処理をする時は、次へ、前への他に、カレントページから上下5件ずつリンクをだしたり、最初に戻るや、最後に行く。などいろいろなリンクをつけたくなったりすると思います。
そんな時に必要な数値データは、
・全体のヒット件数
・1ページに表示する件数
・現在何ページ目を閲覧しているか
があればどんなページング処理でもおそらく可能かと思います!たぶん。。。
具体的には、まずはデータベースから全体の件数を取得します。
Code: |
$sql = select count(プライリkeyなど) form table_name;
$res = mysql_query($sql);
if($res){
$temp = mysql_fetch_row($res);
$total_number = $temp[0];
}
//1ペ-ジに表示する数
$page_num = 10;
//分割ペ-ジの算出
$total_pages = (INT)(($total_number + ($page_num - 1)) / $page_num);
//ゲットにてカレントペ-ジを取得
if(is_numeric($_GET['page'])){
$current_page = $_GET['page'];
}else{
$current_page = 1;
}
//ペ-ジ番号から実際のクエリ件数を算出
$start = (INT)(($current_page - 1) * $page_num);
$end = (INT)$page_num;
//実際ペ-ジに出力するデ-タをクエリ
$sql = "select * from table_name limit $start,$end";
$res = mysql_query($sql);
if($res){
$count = 0;
while($temp[$count] = mysql_fetch_assoc($res)){
$count++;
}
}
var_dump($temp);
|
ページングを吐き出す時はこんな感じです。
Code: |
<div class="paging">
<?php
echo '総数 '.$total_number.'件';
if($total_pages > 1){
$start = ($current_page - 5);
if($start < 1){
$start = 1;
}
$end = ($current_page + 5);
if($end > $total_pages){
$end = $total_pages;
}
//ペ-ジングの吐き出し
echo '<p style="text-align:right;">';
if($page > 1){//次ぎへを追加
echo '<a href="?page='.($page - 1).'">前へ</a> |';
}
for($i=$start;$i<=$end;$i++){
if($page == $i){
echo '<b>'.$i.'</b> |';
}else{
echo '<a href="?page='.$i.'">'.$i.'</a> |';
}
}
if(($page + 1) <= $total_pages){//次ぎへを追加
echo ' <a href="?page='.($page + 1).'">次へ</a>';
}
echo '</p>';
}
?>
</div>
|
動作確認しませんが、たぶんいけるはずです! |
_________________ yuya |
|
|
|
|
|
|
|
新規投稿: 不可 返信: 不可t 自分の記事の編集: 不可 自分の記事の削除: 不可 投票への参加: 不可
|
|