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

Тема в разделе "PHP", создана пользователем yeaahhh, 6 май 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Друзья. Подскажите пожалуйста как реализуется обратная сортировка по числам в цикле?
    Например нужно вывести года начиная от 1920-2010..
    Делаем цикл.. При использовании $k++ выводит от меньшего(1920) к большему(2005). Как сделать так, чтобы выводилось от большего(2005) к меньшему(1920)?
    Что-то искал, искал.. не нашёл нигде..
    Заранее большое спасибо ;)
     
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    сортировать массив можно и не в цикле, есть такие функции обратной сортировки как rsort и arsort.
     
    yeaahhh нравится это.
  3. kud

    kud Постоялец

    Регистр.:
    18 фев 2009
    Сообщения:
    89
    Симпатии:
    11
    А $k-- не пробовали ? )
    Например:
    PHP:
    for ($k 2005$k >= 1920$k--) {
      echo 
    $k '<br>';
    }
     
    yeaahhh нравится это.
  4. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    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, благодарю! то, что нужно)
     
  5. Dima Kos

    Dima Kos Постоялец

    Регистр.:
    1 апр 2010
    Сообщения:
    54
    Симпатии:
    6
    хех... инкремент что таке знаете, а декремент видимо не знаете...
     
  6. stasdre

    stasdre Постоялец

    Регистр.:
    15 янв 2010
    Сообщения:
    125
    Симпатии:
    18
    Тебе ж русским языком написали, осталось только поменять местами. Вот как будет:
    Код:
    <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>
    
     
  7. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    stasdre, к кому обращено твоё борзое сообщение?
    глазки протри..
    (Прошу прощения у модераторов за оффтоп)
     
  8. stasdre

    stasdre Постоялец

    Регистр.:
    15 янв 2010
    Сообщения:
    125
    Симпатии:
    18
    Упс сорри не увидел;)
     
  9. yeaahhh

    yeaahhh

    Регистр.:
    8 май 2008
    Сообщения:
    278
    Симпатии:
    11
    Ребят, возник ещё 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..
     
  10. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    1) Зачем столько ужасных условий, если можно рассчитать одной формулой $k = $elements - $start?
    2) Значит на всех страницах у тебя $start = 3. Посмотри как у тебя рассчитывается $start = ($page-1)*(кол-во новостей на 1 страницу);
     
    yeaahhh нравится это.
Статус темы:
Закрыта.