2015-08-31 2 views
2

Я пытаюсь получить работу с разбивкой по страницам, все работает отлично, кроме разбивки на страницы.php mysql html pagination не работает

Я использую PHP, HTML и MYSQL. Я могу получить записи отлично, но все записи на веб-странице отображаются, я просто хочу ограничить это, чтобы показать 10 на страницу.

Не знаю, что я делаю неправильно здесь.

<html> 
<link rel="stylesheet" type="text/css" href="main.css"> 
<head> 
<title>Paging Using PHP</title> 
</head> 
<body> 
<?php 
$dbhost = 'localhost:3036'; 
$dbuser = 'useer'; 
$dbpass = 'passwoord'; 
$rec_limit = 10; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
if(! $conn) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 
mysql_select_db('disks'); 
/* Get total number of records */ 
$sql = "SELECT count(id) FROM hdd "; 
$retval = mysql_query($sql, $conn); 
if(! $retval) 
{ 
    die('Could not get data: ' . mysql_error()); 
} 
$row = mysql_fetch_array($retval, MYSQL_NUM); 
$rec_count = $row[0]; 

if(isset($_GET{'page'})) 
{ 
    $page = $_GET{'page'} + 1; 
    $offset = $rec_limit * $page ; 
} 
else 
{ 
    $page = 0; 
    $offset = 0; 
} 

     echo '<h3>',Table,'</h3>'; 

$left_rec = $rec_count - ($page * $rec_limit); 

$sql = "SELECT cust, manu, model, serial, capacity, firmware, deviceid, ataver, ltime, date, ourref, result FROM hdd"; 
     "FROM hdd". 
     "LIMIT $offset, $rec_limit"; 

$retval = mysql_query($sql, $conn); 
if(! $retval) 
{ 
    die('Could not get data: ' . mysql_error()); 
} 
echo '<table cellpadding="0" cellspacing="0" class="db-table">'; 
echo '<tr><th>Customer</th> <th>HDD Type</th> <th>Model</th> <th>Serial</th> <th>Size</th> <th>Firmware</th> <th>Device ID</th> <th>ATA Ver</th> <th>Manufactured On</th> <th>date</th> <th>ourref</th> <th>result</th></tr>'; 

while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) 
{ 
echo '<tr>'; 
$i=0; 
         foreach($row as $key=>$value) { 
if($i==10) break; 
           echo '<td>',$value,'</td>'; 
         } 
         echo '</tr>'; 
} 
       echo '</table><br />'; 
if($page > 0) 
{ 
    $last = $page - 2; 
    echo "<a href=\"$_PHP_SELF?page=$last\">Last 10 Records</a> |"; 
    echo "<a href=\"$_PHP_SELF?page=$page\">Next 10 Records</a>"; 
} 
else if($page == 0) 
{ 
    echo "<a href=\"$_PHP_SELF?page=$page\">Next 10 Records</a>"; 
} 
else if($left_rec < $rec_limit) 
{ 
    $last = $page - 2; 
    echo "<a href=\"$_PHP_SELF?page=$last\">Last 10 Records</a>"; 
} 
mysql_close($conn); 
?> 

Как я могу заставить это отображать только 10 записей на страницу?

Заранее спасибо.

+2

Не должно быть '$ _GET ['page']' вместо '$ _GET {'page'}'? – andrewsi

+0

Не используйте 'mysql_ *' функции, они устарели. Вместо этого используйте [PDO] (http://php.net/manual/en/book.pdo.php) или [mysqli] (http://php.net/manual/en/book.mysqli.php). –

ответ

2

Я считаю, что проблема связана с вашим SQL-запросом. У вас есть:

$sql = "SELECT cust, manu, model, serial, capacity, firmware, deviceid, ataver, ltime, date, ourref, result FROM hdd"; 
     "FROM hdd". 
     "LIMIT $offset, $rec_limit"; 

Где он должен быть:

$sql = "SELECT cust, manu, model, serial, capacity, firmware, deviceid, ataver, ltime, date, ourref, result FROM hdd "; 
$sql .= "LIMIT $offset, $rec_limit"; 

Кроме того, я согласен с тем, что упомянутый Джон. У вас $ _GET {'page'}, и он должен быть $ _GET ['page'] в обоих местах.

+0

Спасибо, правильно. он работает так, как сейчас. – user2107349

1

Почему вы используете $ _GET {'page'}? Измените $ _GET {'page'} на $ _GET ['page'].

+0

Спасибо, Джон. – user2107349

+0

Ваше приветствие .... – JohnPiaPian

Смежные вопросы