Я пытаюсь написать сценарий, который вытаскивает конкретный запрос из базы данных MYSQL, а затем разбивает на страницы результаты.MYSQL-запрос с разбиением на страницы PHP
Я думаю, что я знаю, что решения - это просто вопрос о моем недостатке знаний о том, как реализовать/сфотографировать их.
Вот мой сценарий, который частично работает:
<?php
$tstart = 0;
$tend = 0;
//$tpage = 0; // the start page
//$tpages = 0; // number of pages
$tpagelinks = ""; // stores the output pagination
$ttotal = 0;/total number of results
$trows = 5; // number of results per page
$online = ""; // stores the results to display
$dbhost = "localhost";
$dbuser = "****_models";
$dbpass = "****";
$dbcon = @mysql_connect($dbhost,$dbuser,$dbpass) or die('Database error: ' . mysql_error());
$db = mysql_select_db('****_cammodels', $dbcon) or die('Database error: ' . mysql_error());
$query = "SELECT * FROM cbmodels WHERE gender='f' AND status='Public' AND age<='22'";
$result = mysql_query($query) or die('Query failed: ' . mysql_error() . "\nQuery: $query");
while($row = mysql_fetch_array($result))
{
$online .= "#". $ttotal . " \n";
$online .= $row['status'] . "/" . $row['name'] . "/" . $row['gender'] . "/" . $row['age'] . "\n";
$online .= "<br>\n";
$ttotal ++;
}
$tstart = ($tpage * $trows) - $trows;
$tend = $tstart + $trows;
if ($tend > $ttotal) { $tend = $ttotal; }
$tpages = floor($ttotal/$trows);
if ($ttotal % $trows != 0) { $tpages ++; }
if ($tpage > $tpages) { $tpage = 1; }
if ($tpage > 1) { $tpagelinks .= "<a class='allonlinepages_url' href='new_from_db.php?page=" . ($tpage - 1) . "'>PREVIOUS</a>\n"; }
for ($ti = 1; $ti <= $tpages; $ti ++)
{
if ($tpage == $ti) { $tpagelinks .= "$ti \n"; }
else { $tpagelinks .= "<a class='allonlinepages_url' href='new_from_db.php?page=$ti' >$ti</a>\n"; }
}
if ($tpage < $tpages) { $tpagelinks .= "<a class='allonlinepages_url' href='new_from_db.php?page=" . ($tpage + 1) . "' >NEXT</a>\n"; }
echo $online;
echo $tpagelinks;
mysql_close($dbcon);
?>
Что она делает показывает все результаты поиска в базе данных, количество нумерации страниц, кажется, показывает правильное количество страниц, но ссылки неверно/не показывать следующую страницу результатов.
Мне кажется, мне нужно запросить базу данных, чтобы сначала подсчитать количество строк для разбивки на страницы, а затем вычислить количество страниц, а затем выполнить другой запрос для получения результатов, возможно, сохранить это в другом массиве в виде результатов на страницу? Или что-то в этом роде. Я пробовал много раз, и вышеприведенный сценарий близок к тому, что я получил почти все мои другие попытки просто сломать скрипт и либо произвести странные результаты, либо вообще ничего.
Сценарий, который я сделал, чтобы вытащить данные из фактического фида для хранения в самой базе данных, помеченной онлайн и офлайн, работает правильно, поэтому я не включил это, так как это отдельный скрипт.
Заранее благодарю вас за любую помощь, с которой обращаются ребята.
EDIT Удалено все действующие коды RE: Комментарии.
Хорошо, я реализовал эти изменения, и теперь, что я получаю правильное количество результатов в списке, но только 2 страницы в пагинацией однако при нажатии на 2-ю страницу его показывает следующий набор результатов ... Я повторил счетчик var и он показывает только 1 результат? – user2495392
Я добавил исправленный сценарий к исходному сообщению на всякий случай, если вы его не заметите, спасибо ... (Я мог бы включить URL-адрес на тестовую страницу, я предполагаю, но она размещена на домене для взрослых, поэтому я не думаю, что было бы приемлемо здесь) – user2495392
Будьте осторожны с ошибками по очереди. Я написал код разбивки на страницы несколько раз, и есть несколько мест, где вам нужно округлить или добавить тот, который не имеет смысла. – staticsan