0

少しの情報

現在、自分の作品をプロジェクトとして表示できるプロジェクトに取り組んでいます。

私のデータベースではlist、MYSQLクエリに従って、その中の数字がPHPにどこにあるべきかを示すように設定しました。

プロジェクトページでページネーションを作成したので、5行を超える場合は、新しいプロジェクトリストページがページネーションに追加されます。

(私の前後のページ付けは、リンクされた画像によって行われます)

Jquery Ajax POSTを使用して、の新しいページを呼び出します。

問題:

以前はPHPクエリをname(プロジェクト名)で並べ替えるように設定していましたが、新しい列を作成listして、カスタムの順序で表示できるようにしました。list

しかし、からに変更してからnamelistページには5つのレコードしか表示されず、ページネーションオプションが表示されなくなりました(必要な場合)

問題はページネーション内の2つのクエリに関係していることを私は知っています-誰かがこれを解決する方法を教えてもらえますか?

listChar、Varchar、INTの列を作成してみましたが、すべて役に立ちませんでした。:(

コード:

PHPページネーション:

    <?
$get_stuff = mysql_query("SELECT * FROM `projects` WHERE `cat`='$arrc' ORDER BY `list` ASC")or die(mysql_error());
$getid = mysql_num_rows($get_stuff);
$r = mysql_fetch_row($get_stuff);
$numrows = $r[0];
// number of rows to show per page
$rowsperpage = 5;
// find out total pages
$totalpages = ceil($numrows / $rowsperpage);

// get the current page or set a default
if (isset($_POST['pid']) && is_numeric($_POST['pid'])) {
   // cast var as int
   $currentpage = (int) $_POST['pid'];
} else {
   // default page num
   $currentpage = 1;
} // end if

// if current page is greater than total pages...
if ($currentpage > $totalpages) {
   // set current page to last page
   $currentpage = $totalpages;
} // end if
// if current page is less than first page...
if ($currentpage < 1) {
   // set current page to first page
   $currentpage = 1;
} // end if

// the offset of the list, based on current page 
$offset = ($currentpage - 1) * $rowsperpage;
// get the info from the db 
$get_stuff2 = mysql_query("SELECT * FROM `projects` WHERE `cat`='$arrc' ORDER BY `list` ASC LIMIT $offset, $rowsperpage")or die(mysql_error());
while($projectz = mysql_fetch_array($get_stuff2)){
?>
<ul class="projex">
<li onClick="project('project','<? echo $projectz['id']; ?>','1','<? echo $currentpage; ?>')" class="onclick"> <? echo $projectz['name']; ?>
</ul>
<?
}
?>

問題ではないことがわかっているので、リンクコードを追加していません。

4

1 に答える 1

1

あなたの問題はここにあるようです:

<?
$get_stuff = mysql_query("SELECT * FROM `projects` WHERE `cat`='$arrc' ORDER BY `list` ASC")or die(mysql_error());
$getid = mysql_num_rows($get_stuff);
$r = mysql_fetch_row($get_stuff);
$numrows = $r[0];

行数をに入れ、$getidその変数を無視して、結果セットから最初に返された列をに入れて$numrows使用します。これは、すべてのページネーションの計算が、行数ではなく、返された最初の列に基づいていることを意味します。name最初の列で注文した場合は7、最初の列で注文した場合listは5以下だと思います。

私が提案する修正はCOUNT、SQLクエリの行数を取得することです。ただし、緊急の必要性がない限り、$getid次の例に示されていません。

<?php
$get_stuff = mysql_query("SELECT COUNT(*) FROM `projects` WHERE `cat`='$arrc'")or die(mysql_error());
$r = mysql_fetch_row($get_stuff);
$numrows = $r[0];
于 2012-08-07T02:45:47.080 に答える