Перейти к содержимому



Обратная нумерация строк, нужна помощь

#1 SURkiss
SURkiss
  • Неактивные
  • 22 сообщений
  • Репутация: 0
0

Обновлено 11 ноября 2013 - 21:40  Отправлено 24 октября 2013 - 16:52

Здравствуйте. На сайте в админке хочу чтобы в категории возле названий статтей стояли порядковые числа начиная с единицы. На страницу выводиться по 20 записей. Нумерация начинается с первой страницы с единицы. Подскажите, пожалуйста, как сделать так, чтобы на первой странице нумерация была с конца, а на последней начиналась с единицы с самого низа страницы?

Вот код, который я использовал:
$i=1 + $start;
do
{
printf ("<p><b>$i.</b> <b class='redit'><a href='edit_article.php?id=%s'>%s</a></b></p>",$myrow["id"],$myrow["title"]);
$i++;
}
while ($myrow = mysql_fetch_array($result));
}

 

 

  • 0

#2 alex159
alex159
  • Пользователь
  • 495 сообщений
  • Репутация: 35

Отправлено 24 октября 2013 - 19:39

SURkiss, У вас реализована постраничная навигация?
  • 0

#3 SURkiss
SURkiss
    Topic Starter
  • Неактивные
  • 22 сообщений
  • Репутация: 0

Отправлено 25 октября 2013 - 00:11

Да, переменная start как раз относиться к постраничной навигации.
//Количество записей на странице
$num = $myrow["str"];
//Вычесление с какого номера нужно выводить сообщения
$start = $page * $num - $num;
$i=1 + $start;
do
{
printf ("<p><b>$i.</b> <b class='redit'><a href='edit_article.php?id=%s'>%s</a></b></p>",$myrow["id"],$myrow["title"]);
$i++;
}
while ($myrow = mysql_fetch_array($result));
}

Подсчёт и нумерация работают. Просто хочу чтобы нумерация велась с первого номера с последней страницы, но как это сделать не знаю. Подкорректируйте код, если не сложно или подскажите где поискать инфу. В php профан).
  • 0

#4 fedornabilkin
fedornabilkin
  • Модератор
  • 1 191 сообщений
  • Репутация: 206

Отправлено 25 октября 2013 - 14:18

Насколько я понял, если на странице 20 записей, то
Хотя нет,я ничего не понял. Подробнее пожалуйста.

Сообщение отредактировал fedornabilkin: 25 октября 2013 - 14:20

  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#5 SURkiss
SURkiss
    Topic Starter
  • Неактивные
  • 22 сообщений
  • Репутация: 0

Отправлено 25 октября 2013 - 18:58

Есть админка, в ней выводяться ссылки с названиями новостей, по 20 штук на каждой странице. При клике на ссылку открывается страница редактирования, но это не по сути. Добавил нумерацию каждой такой ссылки, нашёл в интернете пример и мне он подошёл. Но нумерация ведёться не совсем так как мне нужно. На первой странице админки выводяться самые свежие новости, на последней - старые. Нумерация ведёться с единицы начиная с первой страницы. А я желаю наоборот, чтобы нумерация велась с единицы, начиная с самого старого поста, тобишь с последней страницы. Как это реализовать правильно, используя тот код, который я писал выше?
  • 0

#6 alex159
alex159
  • Пользователь
  • 495 сообщений
  • Репутация: 35

Отправлено 25 октября 2013 - 21:10

Можете пожалуйста, скинуть более полный код, Где идет вывод списка, а также постраничной навигации
  • 0

#7 SURkiss
SURkiss
    Topic Starter
  • Неактивные
  • 22 сообщений
  • Репутация: 0

Отправлено 25 октября 2013 - 23:09

<?
$result = mysql_query("SELECT str FROM options WHERE id=2", $db);
$myrow = mysql_fetch_array($result);
$num = $myrow["str"];
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat=3");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total =  intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
  if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
if (!isset($id))
{
$result1 = mysql_query("SELECT id,title FROM data WHERE cat=3 ORDER BY id DESC, date LIMIT $start, $num",$db);	
$myrow1 = mysql_fetch_array($result1);
// Переменная $i - вывод номера строки
$i=1 + $start;
do
{
// Вывод ссылок на страницу редактирование новостей
printf ("<p><b>$i.</b> <b class='redit'><a href='edit_article.php?id=%s'>%s</a></b></p>",$myrow1["id"],$myrow1["title"]);
$i++;
}
while ($myrow1 = mysql_fetch_array($result1));
}
else
{
// Здесь код странички для редактирования, его пропускаю.
}
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=edit_article.php?cat='.$cat.'&page=1>Первая</a> | <a href=edit_article.php.php?cat='.$cat.'&page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=edit_article.php?cat='.$cat.'&page='. ($page + 1) .'>Следующая</a> | <a href=edit_article.php?cat='.$cat.'&page=' .$total. '>Последняя</a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=edit_article.php?cat='.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=edit_article.php?cat='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=edit_article.php?cat='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=edit_article.php?cat='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=edit_article.php?cat='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 5 <= $total) $page5right = ' | <a href=edit_article.php?cat='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=edit_article.php?cat='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=edit_article.php?cat='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href=edit_article.php?cat='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=edit_article.php?cat='.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню если страниц больше одной
if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class="pstrnav">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
else
{
echo "<p>Информация не может быть извлечена! В таблице нет записей.</p>";
exit ();
}
?>

  • 0

#8 alex159
alex159
  • Пользователь
  • 495 сообщений
  • Репутация: 35

Отправлено 26 октября 2013 - 09:53

Советую строку
@$page = $_GET['page'];
Заменить на эту
if(isset($_GET['page'])) { $page = $_GET['page']; }
Так как первый код засоряет логи, какждий раз когда вы будете обращаться к этой странице без GET['page'] запроса. Вам в лог ошибок будут выпадать ошибки.
  • 0

#9 SURkiss
SURkiss
    Topic Starter
  • Неактивные
  • 22 сообщений
  • Репутация: 0

Отправлено 26 октября 2013 - 17:19

if(isset($_GET['page'])) { $page = $_GET['page']; }

, большое спасибо за совет, поправил код. А по нумерации можете подсказать что и как?
  • 0

#10 1putnik
1putnik
  • Неактивные
  • 96 сообщений
  • Репутация: 8

Отправлено 11 ноября 2013 - 21:40

Попробуйте это
$result1 = mysql_query("SELECT id,title FROM data WHERE cat=3 ORDER BY id DESC, date LIMIT $start, $num",$db);
Заменить на это
$result1 = mysql_query("SELECT id,title FROM data WHERE cat=3 ORDER BY id ASC, date LIMIT $start, $num",$db);

ORDER BY id DESC - сортировка по убыванию
ORDER BY id ASC - сортировка по возростанию
  • 0

robot
robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
Megoydagi Megoydagi 1-й за Август
Очков активности: 30 4 темы, 8 сообщений, 1 балл репутации
Сайт: bank.net.ru
ТОП самых активных за этот месяц
  • Фотография Vmir
    #1

    Vmir
    Очков активности: 22.5 3 темы, 6 сообщений, 1 балл репутации

  • Фотография BLIK
    #2

    BLIK
    Очков активности: 18 Вне конкурса за определение пользователя месяца

  • Фотография kuztoday
    #3

    kuztoday
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография SergiuS85
    #4

    SergiuS85
    Очков активности: 10.5 2 темы, 1 сообщение, 1 балл репутации

  • Фотография Megoydagi
    #5

    Megoydagi (bank.net.ru)
    Очков активности: 9 Вне конкурса за определение пользователя месяца

  • Фотография mkreine
    #6

    mkreine (analiz-krovi.net)
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография kolver
    #7

    kolver
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография wp01
    #8

    wp01
    Очков активности: 7.5 0 тем, 5 сообщений, 1 балл репутации

  • Фотография Totti
    #9

    Totti
    Очков активности: 7.5 0 тем, 5 сообщений, 1 балл репутации

  • Фотография fedornabilkin
    #10

    fedornabilkin (plohoneponyal.ru)
    Очков активности: 7.5 1 тема, 2 сообщения, 1 балл репутации

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

Оформление форума – IPBSkins.ru