2015-07-29 2 views
0

я создать PHP новости системы, но у меня есть проблема:Pagination Предыдущая - Следующая Increment

<?php 
include('config.php'); 
if(isset($_GET["page"])) $PAGE=$_GET["page"]; else $PAGE=1; 
$query1=mysql_query("select id, name, email , age from addd LIMIT ". (($PAGE * 5) - 5) .",5"); 

echo "<table><tr><td>Testo</td><td>Nome</td><td>Anni</td></tr>"; 

function truncate_string($str, $length) { 
if (!(strlen($query2['name']) <= $length)) { 
    $query2['name'] = substr($query2['name'], 0, strpos($query2['name'], ' ', $length)) . '...'; 
} 

return $query2['name']; 
} 

while($query2=mysql_fetch_array($query1)) 
{ 
$number= $query2['name']; 
echo "<tr><td>".substr($query2['name'], 0, 500)."...</td>"; 
echo "<td>".$query2['email']."</td>"; 
echo "<td>".$query2['age']."</td>"; 
echo "<td>".str_word_count($number)."</td>"; 
echo "<td><a href='edit.php?id=".$query2['id']."'>Mod</a></td>"; 
echo "<td><a href='delete.php?id=".$query2['id']."' onclick=\"return confirm('Sei sicuro di volerlo eliminare?');\");'>Canc</a></td><tr>"; 
echo "<td><a href='singletwo.php?id=".$query2['id']."');'>vedi</a></td<tr>"; 
} 
?> 

Страницы следовать этой нумерации: страница = 1, страница 2 = Ecc?.

Каждая страница содержит 5 новостей.

Как создать автоматическую систему разбиения на страницы?

С помощью Prev-Next автоматически обнаруживается возможная следующая или предыдущая страница?

Я не знаю, как это сделать.

ответ

1

Start, имея длину макс и общее количество строк в переменных:

<?php 
include('config.php'); 

$max = 5; 
$total = mysql_query("select count(*) from addd"); 
$PAGE = isset($_GET["page"]) ? $_GET["page"] : 1; 

$query1 = mysql_query("select id, name, email , age from addd LIMIT " . (($PAGE * $max) - $max) . "," . $max); 

Таким образом, вы можете вычислить, сколько страниц вам нужно.

Следующий код даст вам список страниц (страница 1, страница 2, страница 3 и т.д.):

for($i = 0; $i < ceil($total/$max); $i ++) 
{ 
    $p = $i + 1; 
    echo '<a href="?page=' . $p . '">Page ' . $p . '</a>'; 
} 

Если вы хотели бы иметь Предыдущий и Следующий ссылки, попробуйте это:

if($PAGE > 1) 
    echo '<a href="?page=' . ($PAGE - 1) . '>Previous</a>'; 

if(ceil($total/$max) > $PAGE) 
    echo '<a href="?page=' . ($PAGE + 1) . '>Next</a>'; 
+0

Это: для ($ I = 0; $ I <($ total/$ max); $ i ++) { $ p = $ i + 1; echo 'Page ' . $p . ''; } Возврат только: page1, и это: не работает: if ($ PAGE> 1) echo 'Next'; –

+0

Извините, теперь работайте, но если на следующей странице есть только 1 новость, не работайте. Мин 2 новости. –

+0

Сколько записей в общей таблице «addd»? Ссылки на страницы только должны отображаться, если их больше 5. – boylett

1

что вы можете сделать, это:

$currentPage = isset($_GET['page']) ? $_GET['page'] : 1; 
$limit = $currentPage*5; 
$offset = $offset-5; 

Теперь, когда у вас есть эти цифры, вы можете использовать их в запросе:

$stmt = "SELECT 
... 
FROM news 
LIMIT ".$offset.", ".$limit."; 

Таким образом, вы получите нужные записи. Что касается следующей и предыдущей кнопки идут:

if ($currentPage > 1) { 
    // Show previous button 
} 

Для следующей кнопки вы должны сделать еще один запрос:

$stmt = "SELECT COUNT(*) as total FROM news"; 
$result = $pdo->fetch(); 
$totalRows = $result['total']; 

if ($currentPage < round($totalRows/5)) { 
    // Show next button 
} 
Смежные вопросы