Обратная сортировка в цикле

Статус
В этой теме нельзя размещать новые ответы.

yeaahhh

Старатель
Регистрация
8 Май 2008
Сообщения
278
Реакции
11
Друзья. Подскажите пожалуйста как реализуется обратная сортировка по числам в цикле?
Например нужно вывести года начиная от 1920-2010..
Делаем цикл.. При использовании $k++ выводит от меньшего(1920) к большему(2005). Как сделать так, чтобы выводилось от большего(2005) к меньшему(1920)?
Что-то искал, искал.. не нашёл нигде..
Заранее большое спасибо ;)
 
Друзья. Подскажите пожалуйста как реализуется обратная сортировка по числам в цикле?
Например нужно вывести года начиная от 1920-2010..
Делаем цикл.. При использовании $k++ выводит от меньшего(1920) к большему(2005). Как сделать так, чтобы выводилось от большего(2005) к меньшему(1920)?
Что-то искал, искал.. не нашёл нигде..
Заранее большое спасибо ;)
сортировать массив можно и не в цикле, есть такие функции обратной сортировки как rsort и arsort.
 
При использовании $k++ выводит от меньшего(1920) к большему(2005). Как сделать так, чтобы выводилось от большего(2005) к меньшему(1920)?
А $k-- не пробовали ? )
Например:
PHP:
for ($k = 2005; $k >= 1920; $k--) {
  echo $k . '<br>';
}
 
PHP:
<select name="year" style="width:92px;height:23px;font-size:14px;">
<option value="Год рождения" selected disabled>Год рождения</option>
 <? for ($k=1950;$k<2010;$k++) 
{
echo "<option value=".$k." >".$k."</option>";
} 
</select>
saen, Я имею ввиду вывод select'a через цикл.. К сожалению, не знаю как такое реализовать через массив..
Можно у вас узнать как?(в php совсем недавно.. с массивами редко работал..)

kud, благодарю! то, что нужно)
 
хех... инкремент что таке знаете, а декремент видимо не знаете...
 
Тебе ж русским языком написали, осталось только поменять местами. Вот как будет:
Код:
<select name="year" style="width:92px;height:23px;font-size:14px;">
<option value="Год рождения" selected disabled>Год рождения</option>
 <? for ($k=2010;$k>=1940;$k--) 
{
echo "<option value=".$k." >".$k."</option>";
} 
</select>
 
stasdre, к кому обращено твоё борзое сообщение?
глазки протри..
(Прошу прощения у модераторов за оффтоп)
 
Ребят, возник ещё 1 вопрос..
Есть навигация на сайте, принцип работы которой таков:
Это запрос к таблице и основные моменты:
PHP:
$sql = mysql_query("SELECT *
            FROM post
            ORDER BY date DESC LIMIT {$start}, {$nums}") or die(mysql_error());
$nums - кол-во выводимых новостей на 1 страницу
$start (с какой строки выводить новость из бд) рассчитывается:
$start = ($page-1)*(кол-во новостей на 1 страницу);

(это в кратце.. думаю алгоритм понятен - он стандартный.. темболее основу скрипта брал из паблика)

Хочу сделать нумерацию в обратном направлении в цикле while..
Не могу понять, почему не работает вот это:
PHP:
if ($start = "0") // т.е. если выводятся новости начиная с 0 строки(первая страница), то $k = кол-ву строк в БД
{$k = $elements;}
elseif ($start = 3) // если выводятся новости начиная с 3(т.е. это уже вторая страница), то $k = кол-во строк в БД - 3
{$k = $elements - 3;}
elseif ($start = 6) // если выводятся новости начиная с 6(т.е. это уже третья страница), то $k = кол-во строк в БД - 6
{$k = $elements - 6;}
elseif ($start = 9) // если выводятся новости начиная с 9(т.е. это уже четвёртая страница), то $k = кол-во строк в БД - 9
{$k = $elements - 9;}

При таких условиях выводит на всех страница условие:
elseif ($start = 3)
{$k = $elements - 3;}

Т.е. если в таблице кол-во строк 25, то выводит:
22
21
20

Пробую вставить эти условия в цикл (цикл у меня while)
все новости на всех страницах идут с номерами 22..
 
Ребят, возник ещё 1 вопрос..
Есть навигация на сайте, принцип работы которой таков:
Это запрос к таблице и основные моменты:
PHP:
$sql = mysql_query("SELECT *
            FROM post
            ORDER BY date DESC LIMIT {$start}, {$nums}") or die(mysql_error());
$nums - кол-во выводимых новостей на 1 страницу
$start (с какой строки выводить новость из бд) рассчитывается:
$start = ($page-1)*(кол-во новостей на 1 страницу);

(это в кратце.. думаю алгоритм понятен - он стандартный.. темболее основу скрипта брал из паблика)

Хочу сделать нумерацию в обратном направлении в цикле while..
Не могу понять, почему не работает вот это:
PHP:
if ($start = "0") // т.е. если выводятся новости начиная с 0 строки(первая страница), то $k = кол-ву строк в БД
{$k = $elements;}
elseif ($start = 3) // если выводятся новости начиная с 3(т.е. это уже вторая страница), то $k = кол-во строк в БД - 3
{$k = $elements - 3;}
elseif ($start = 6) // если выводятся новости начиная с 6(т.е. это уже третья страница), то $k = кол-во строк в БД - 6
{$k = $elements - 6;}
elseif ($start = 9) // если выводятся новости начиная с 9(т.е. это уже четвёртая страница), то $k = кол-во строк в БД - 9
{$k = $elements - 9;}
При таких условиях выводит на всех страница условие:
elseif ($start = 3)
{$k = $elements - 3;}

Т.е. если в таблице кол-во строк 25, то выводит:
22
21
20

Пробую вставить эти условия в цикл (цикл у меня while)
все новости на всех страницах идут с номерами 22..
1) Зачем столько ужасных условий, если можно рассчитать одной формулой $k = $elements - $start?
2) Значит на всех страницах у тебя $start = 3. Посмотри как у тебя рассчитывается $start = ($page-1)*(кол-во новостей на 1 страницу);
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху