2017-02-18 23 views
0

ここで私のウェブサイトで試しているスクリプトを見ることができます。すべてが動作しますが、私はすべてのページで同じレコードを5回しか見ません。常に1を記録します。ヘットは2番目のレコードには行かないので何が間違っていますか?PHP Pagenated view Mysql

アドバイス

<?php 


$per_page = 5; 

$query = "SELECT * FROM article"; 
$mysqli = mysqli_connect("localhost", "root", "******", "Website"); 
$res = mysqli_query($mysqli, $query); 
$row = mysqli_fetch_assoc($res); 
$total_results = mysqli_num_rows($res); 
$total_pages = ceil($total_results/$per_page); 

if (isset($_GET['page']) && is_numeric($_GET['page'])) 

{ 

$show_page = $_GET['page']; 

if ($show_page > 0 && $show_page <= $total_pages) 

{ 

$start = ($show_page -1) * $per_page; 

$end = $start + $per_page; 

} 

else 

{ 

// error - show first set of results 

$start = 0; 

$end = $per_page; 

} 

} 

else 

{ 

$start = 0; 

$end = $per_page; 

} 


echo "<p><a href='articles.php'>view All</a> | <b>By Page:</b> "; 

for ($i = 1; $i <= $total_pages; $i++) 

{ 

echo "<a href='articlespagenated.php?page=$i'>$i</a> "; 

} 

echo "</p>"; 

echo "</p>"; 

echo "<table border='1' cellpadding='10'>"; 

echo "<tr> <th>ArtID</th> <th>Art Pictureto</th> <th></th> <th></th></tr>"; 

for ($i = $start; $i < $end; $i++) { 

if ($i == $total_results) { break; } 

echo "<tr>"; 

echo '<td width="40" align="center" valign="middle">' . $row['artid'] . '</td>'; 

echo '<td width="130" align="center" valign="middle">' . $row['artfoto'] . '</td>'; 

echo '<td width="40" align="center" valign="middle"><a href="articleedit.php?artid=' . $row['artid'] . '">Edit</a></td>'; 

echo '<td width="40" align="center" valign="middle"><a href="artikcledelete.php?artid=' . $row['artid'] . '">Delete</a></td>'; 

echo "</tr>"; 

} 

echo "</table>"; 

?> 

答えて

1

問題は、あなたが最初の行のみをつかんだということであるためにありがとう:、何をしたい

$query = "SELECT * FROM article"; 
$mysqli = mysqli_connect("localhost", "root", "******", "Website"); 
$res = mysqli_query($mysqli, $query); 
$row = mysqli_fetch_assoc($res); 

mysqli_fetch_assocをループにある:

$query = "SELECT * FROM article"; 
$mysqli = mysqli_connect("localhost", "root", "******", "Website"); 
$res = mysqli_query($mysqli, $query); 
$rows = []; 
while (($row = mysqli_fetch_assoc($res)) !== null) { 
    $rows[] = $row; 
} 

次に、$rowsを超えるforeach()を入力してデータを出力できます。

はページネーションのために、私は、MySQLのLIMITOFFSETの機能を使用することをお勧めします:

$page = 2; 
$rows_per_page = 5; 
$offset = $page * $rows_per_page; 
$query = "SELECT * FROM article LIMIT $rows_per_page OFFSET $offset"; 
$mysqli = mysqli_connect("localhost", "root", "******", "Website"); 
$res = mysqli_query($mysqli, $query); 
$rows = []; 
while (($row = mysqli_fetch_assoc($res)) !== null) { 
    $rows[] = $row; 
} 

ちょうどあなたがユーザーからこの背中を取得している場合は必ずサニタイズ$pageを作る、または準備された文の中に見えます。