mysqli — PHP Разбитый вид Mysql

Ниже вы можете увидеть скрипт, который я пробую на моем сайте. Все работает, но я вижу только одну и ту же запись 5 раз на каждой странице, всегда запись 1. Что я делаю не так, потому что он не идет ко второй записи?

Спасибо за совет

<?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>";

?>

0

Решение

Проблема в том, что вы берете только первый ряд:

$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;
}

Тогда ты можешь foreach() над $rows выводить ваши данные.

Для нумерации страниц я бы рекомендовал использовать MySQL LIMIT а также OFFSET функции:

$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 если вы получаете это от пользователя, или посмотрите на подготовленные заявления.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector