2012-01-18 7 views
0

Stackerで何十件もの質問を見てきましたが、おそらくページネーションの是正策を検討するときに何か不足しています。PHPのページング列と行の発行

5行に4行の20個のレコードを表示し、ボトムに「次へ」/「プリーブ」ボタンを表示したいとします。

なんらかの理由で、$ rowperpage = 5が1行5列になります。数字を大きくすると、別の列が追加されます。つまり、テーブルが伸びます。

実際のページネーションは(ページ1,2,3,4 ...まで)うまく機能しますが、列と行は連携していません。

希望の効果を達成するためのアイデアはありますか?

ここで私が使用しているコードです:あなたがすることができ任意の助け

<?php 
DB connection info 

// find out how many rows are in the table 
$sql = "SELECT COUNT(*) FROM users"; 
$result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR); 
$r = mysql_fetch_row($result); 
$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($_GET['currentpage']) && is_numeric($_GET['currentpage'])) { 
    // cast var as int 
    $currentpage = (int) $_GET['currentpage']; 
} 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 
$sql = "SELECT id, name, picture, phone, address1 FROM users LIMIT $offset,    $rowsperpage"; 
$result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR); 

// while there are rows to be fetched... 
echo "<table style='width: 800px; height: 250px'>"; 

echo "<tr style='width: 800px;'>"; 

while ($list = mysql_fetch_assoc($result)) { 
    // echo data 
    echo "<td align='center' style='width: 800px; height: 250px'>" . $list  ['name'] . "<br /><a href='http://www.snarrf.com/onsale/detail.php?id=" . $list ['id'] . "'><img src='http://www.snarrf.com/onsale/nooks/" . $list['picture'] . "'  height='100' width='100' border='0' /></a><br />" . $list['address1'] ."</td>" ; 

} // end while 
echo "</tr>"; 
echo "</table>"; 
/****** build the pagination links ******/ 
echo "<table align='center' >"; 
echo "<tr >"; 
echo "<td align='center' valign='top'><img src='images/sn1.gif'><br></td>"; 
// range of num links to show 
$range = 3; 

// if not on page 1, don't show back links 
if ($currentpage > 1) { 
    // show << link to go back to page 1 
    //echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=1'><<</a> "; 
    // get previous page num 
    $prevpage = $currentpage - 1; 
    // show < link to go back to 1 page 
    //echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevpage'><</a> "; 
} // end if 

// loop to show links to range of pages around current page 
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) { 
    // if it's a valid page number... 
    if (($x > 0) && ($x <= $totalpages)) { 
     // if we're on current page... 
     if ($x == $currentpage) { 
      // 'highlight' it but don't make a link 
      echo "<td align='center'> <img src='images/sn2.gif' border='0'><br>$x </td>"; 
      // if not current page... 
     } else { 
      // make it a link 
      echo " <td align='center' valign='top'><a href='{$_SERVER['PHP_SELF']}?  currentpage=$x'><img src='images/sn2.gif' border='0'><br>$x</a> </td>"; 



     } // end else 
    } // end if 
} // end for 

// if not on last page, show forward and last page links 
if ($currentpage != $totalpages) { 
    // get next page 
    $nextpage = $currentpage + 1; 
    // echo forward link for next page 
    //echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$nextpage'>></a> "; 
    // echo forward link for lastpage 
    //echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$totalpages'>>></a> "; 
} // end if 






echo "<td valign='top'><img src='images/sn3.gif'><br></td>"; 
echo "</tr>"; 
echo "</table>"; 



echo "<table align='center' width='100' >"; 
echo "<tr width='100' >"; 
echo "<td >"; 
// range of num links to show 
$range = 3; 

// if not on page 1, don't show back links 
if ($currentpage > 1) { 
    // show << link to go back to page 1 
    echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=1'><<</a> "; 
    // get previous page num 
    $prevpage = $currentpage - 1; 
    // show < link to go back to 1 page 
    echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevpage'><</a> "; 
} // end if 

// loop to show links to range of pages around current page 
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) { 
    // if it's a valid page number... 
    if (($x > 0) && ($x <= $totalpages)) { 
     // if we're on current page... 
     if ($x == $currentpage) { 
      // 'highlight' it but don't make a link 

      // if not current page... 

     } else { 

      // make it a link 

     } // end else 
    } // end if 
} // end for 

// if not on last page, show forward and last page links 
if ($currentpage != $totalpages) { 
    // get next page 
    $nextpage = $currentpage + 1; 
    // echo forward link for next page 
    echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$nextpage'>></a> "; 
    // echo forward link for lastpage 
    echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$totalpages'>>></a> "; 
} // end if 


echo "</td>"; 
echo "</tr>"; 
echo "</table>"; 





/****** end build pagination links ******/ 
?> 

ありがとう!

答えて

0

は、私はあなたが探しているものを行う必要があります

$rows_counter = 0; 
while ($list = mysql_fetch_assoc($result)) { 
    echo "<td align='center' style='height: 250px'>" . $list['name'] . "<br /><a href='http://www.snarrf.com/onsale/detail.php?id=" . $list['id'] . "'><img src='http://www.snarrf.com/onsale/nooks/" . $list['picture'] . "'  height='100' width='100' border='0' /></a><br />" . $list['address1'] ."</td>" ; 
    if (!(++$rows_counter % 5) and $rowsperpage != $rows_counter) 
     echo "</tr><tr>"; 
} 

while ($list = mysql_fetch_assoc($result)) { 
    echo "<td align='center' style='width: 800px; height: 250px'>" . $list   ['name'] . "<br /><a href='http://www.snarrf.com/onsale/detail.php?id=" . $list ['id'] . "'><img src='http://www.snarrf.com/onsale/nooks/" . $list['picture'] . "'  height='100' width='100' border='0' /></a><br />" . $list['address1'] ."</td>" ; 
} 

を交換すると信じています。

+0

大変感謝しています。私は少し数字をつけていただけでしたが、私はそれを得ました – user1155488

+0

ちょうどfyi ... $ rows_counter = 20; と同じ値にする必要があります。 $ rowsperpage = 20;私の場合は 20(私はしたい総レコード数を表す) と (もし!(++ $ rows_counter%5) は、行数を反映すべきでは4列=成功をもたらす5行の ので、20レコードを希望しました! 助けてくれてありがとう!!! – user1155488

+0

Ranty - 私はあなたに直接連絡をとることができますか - 可能であれば話したいと思います。私が取り組んでいるプロジェクトに興味があります – user1155488

関連する問題