За последние 24 часа нас посетили 18748 программистов и 1611 роботов. Сейчас ищут 920 программистов ...

{Решено} Помогите достроить вывод списка в 5 колонок!

Тема в разделе "Прочие вопросы по PHP", создана пользователем Серый888, 5 ноя 2013.

  1. Серый888

    Серый888 Новичок

    С нами с:
    5 ноя 2013
    Сообщения:
    7
    Симпатии:
    0
    Нашел код который позволяет настроить вывод списка в 3 колонки, а мне надо 5, всю голову уже сломал, пытался методом логического продолжения но по всей видимости Выражение elseif больше 2-ух раз в данной конструкции не работает как True и False помогите кто может! ну или кто чем может!
    Код (Text):
    1.  $totalrows = count($rows); // Counts No. of Rows
    2.   $third = round($totalrows / 3); // Split rows into 3 for three column
    3.   $onethird = $third;
    4.   $twothird = $third * 2;
    5.   $rownumber = 0; // Sets first row number
    6.   foreach ($rows as $row) {
    7.     if ($rownumber == "0") {
    8.       print('<div class="timeline-summary"><ul class="first-column">');
    9.         } elseif ($rownumber == "$onethird") {
    10.             print('</ul></div><div class="timeline-summary"><ul class="second-column">');
    11.         } elseif ($rownumber == "$twothird") {
    12.             print('</ul></div><div class="timeline-summary"><ul class="third-column">');
    13.         }
    14.       print('<li><a href="'.$row->url.'">'.$row->link.'</a>  ('.$row->count.')');
    15.     $rownumber++;
    16.     }
    17.   print('</ul></div>');
    18. ?>
    p.s К сожалению в PHP я не силен.
     
  2. Dmitriy427

    Dmitriy427 Новичок

    С нами с:
    30 окт 2013
    Сообщения:
    53
    Симпатии:
    0
  3. Серый888

    Серый888 Новичок

    С нами с:
    5 ноя 2013
    Сообщения:
    7
    Симпатии:
    0
    Re: Помогите достроить вывод списка в 5 колонок!

    HTML - Верстка мне известна, и мне не понятно к чему Ваша ссылка,мне нужна помощь в правилах PHP. Чувствую что для знающего человека, это ерунда, если кому нетрудно помогите плиз! (очень надо).

    p.s. Все таки где еще попросить помочь с PHP, как не на PHP.ru
     
  4. vayas

    vayas Активный пользователь

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Re: Помогите достроить вывод списка в 5 колонок!

    Вы напишите более подробно что вам требуется? А то так не совсем ясно.
    И ещё что именно вы пробовали?
    Я так понимаю так пробовали?
    Код (Text):
    1.  
    2. $four = $third * 3;
    3. $five = $third * 4;
    4. /// А в цикле
    5. elseif ($rownumber == $four ) {
    6.             print('</ul></div><div class="timeline-summary"><ul class="four-column">');
    7.         }
    8. elseif ($rownumber == $five) {
    9.             print('</ul></div><div class="timeline-summary"><ul class="five-column">');
    10.         }
    Ещё сколько у вас здесь значений? $totalrows
     
  5. Серый888

    Серый888 Новичок

    С нами с:
    5 ноя 2013
    Сообщения:
    7
    Симпатии:
    0
    Re: Помогите достроить вывод списка в 5 колонок!

    Мне нужно что бы выводилось не 3 колонки как в коде указанном в начале темы , а 5 колонок, пробовал вот так: (по логике)

    Код (Text):
    1.  $totalrows = count($rows); // Графы, Число рядов
    2.   $fifth = round($totalrows / 5); // 5 колонок
    3.   $onefifth = $fifth;
    4.   $twofifth = $fifth;
    5.   $threefifth = $fifth;
    6.   $fourthfifth = $fifth * 4;
    7.   $rownumber = 0; // Устанавливает первый номер строки
    8.   foreach ($rows as $row) {
    9.     if ($rownumber == "0") {
    10.       print('<div class="timeline-summary"><ul class="first-column">'); // 1 колонока
    11.         } elseif ($rownumber == "$onefifth") {
    12.             print('</ul></div><div class="timeline-summary"><ul class="second-column">'); //2 колонока
    13.         } elseif ($rownumber == "$twofifth") {
    14.             print('</ul></div><div class="timeline-summary"><ul class="three-column">'); //3 колонока
    15.         } elseif ($rownumber == "$threefifth") {
    16.             print('</ul></div><div class="timeline-summary"><ul class="fourth-column">'); //4 колонока
    17.         } elseif ($rownumber == "$fourthfifth") {
    18.             print('</ul></div><div class="timeline-summary"><ul class="fifth-column">'); //5 колонока
    19.         }
    20.       print('<li><a href="'.$row->url.'">'.$row->link.'</a>  ('.$row->count.')');
    21.     $rownumber++;
    22.     }
    23.   print('</ul></div>');
    24. ?>
    Но, так не работает,при такой конструкции 3 и 4 колонка не отображаются в HTML коде (их как будто нет)
     
  6. vayas

    vayas Активный пользователь

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Re: Помогите достроить вывод списка в 5 колонок!

     
  7. Серый888

    Серый888 Новичок

    С нами с:
    5 ноя 2013
    Сообщения:
    7
    Симпатии:
    0
    Re: Помогите достроить вывод списка в 5 колонок!

    в $totalrows 5
     
  8. vayas

    vayas Активный пользователь

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Re: Помогите достроить вывод списка в 5 колонок!

    А больше может быть?
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Вообще какой-то кривоватый вы способ нашли делить на колонки...
    Код (PHP):
    1. $column_classes = array ("first-column", "second-column", "third-column", "fourth-column", "fifth-column");
    2. $row_number = 0;
    3. foreach ($rows as $row) {
    4.    if ($row_number == 0) {
    5.        echo '<div class="timeline-summary"><ul class="first-column">';
    6.    }
    7.    elseif ($row_number % 5 == 0){
    8.        $row_class = $column_classes[(int)floor($row_number / 5)];
    9.        echo "</ul></div><div class=\"timeline-summary\"><ul class=\"$row_class\">"; 
    10.    }
    11.    print('<li>[url="'.$row->url.'"]link.'[/url]  ('.$row->count.')');
    12.    $row_number++;
    13. }
    14. print('</ul></div>');
    Ну примерно так. Причём этот код рассчитан на то, что в $rows больше 5 элементов
     
  10. Серый888

    Серый888 Новичок

    С нами с:
    5 ноя 2013
    Сообщения:
    7
    Симпатии:
    0
    Re: Помогите достроить вывод списка в 5 колонок!

    - в смысле?, если вы имеете ввиду вообще, то 6 колонок уместится, просто этот шаблон будет использоваться для нескольких страниц и если честно я не знаю, как он себя поведет если колонки не будут умещаться в заданную ширину (просто некоторые слова "значения"они длинные..)

    Добавлено спустя 5 минут 12 секунд:
    - что то не работает, отображает все только в "first-column" - первой колонки (она и единственная передается в HTML.

    Рад бы другому но не умею.
     
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: Помогите достроить вывод списка в 5 колонок!

    А, понял зачем так сложно сделано... Ну фиг с ним, лень свой код додумывать

    Код (Text):
    1. $totalrows = count($rows); // Графы, Число рядов
    2.   $fifth = round($totalrows / 5); // 5 колонок
    3.   $onefifth = $fifth;
    4.   $twofifth = $fifth *2;
    5.   $threefifth = $fifth *3;
    6.   $fourthfifth = $fifth * 4;
     
  12. Серый888

    Серый888 Новичок

    С нами с:
    5 ноя 2013
    Сообщения:
    7
    Симпатии:
    0
    Re: Помогите достроить вывод списка в 5 колонок!

    "mkramer" - Спасибо Вам огромное!!!!!!!!!!!!!!!!!!!! Все работает!!!!!!!!!!!!!!!
     
  13. vayas

    vayas Активный пользователь

    С нами с:
    13 дек 2012
    Сообщения:
    167
    Симпатии:
    9
    Адрес:
    Пермь
    Re: Помогите достроить вывод списка в 5 колонок!

    Ну начни тогда с простого, сделайте таблицу, после нужно разобраться со стилями
    И когда что то не работает нужно писать что именно, мы же не телепаты, ну ошибку хотя бы напишите.
    Код (Text):
    1.  
    2. $i = 0;
    3. echo '<table>';
    4. foreach ($rows as $row)
    5.         {
    6.             if($i==0)
    7.                 echo '<tr>';
    8.             echo '<td><a href="'.$row->url.'">'.$row->link.'</a>  ('.$row->count.')</td>';
    9.             $i++;
    10.             if($i==5)
    11.             {
    12.                 echo '</tr>';
    13.                 $i =0;
    14.             }
    15.         }
    16. echo '</table>'';
     
  14. Серый888

    Серый888 Новичок

    С нами с:
    5 ноя 2013
    Сообщения:
    7
    Симпатии:
    0
    Re: Помогите достроить вывод списка в 5 колонок!

    "vayas"- Спасибо, Все работает, учту Ваши замечания.
     
  15. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: Помогите достроить вывод списка в 5 колонок!

    vayas, у человека другая задача просто. Поэтому и мой первый код его не устроил. И ваш код и мой код делит $rows по 5 элементов, у вас в строке, у меня в столбце. А ТС нужно, чтоб сколько бы не было в $rows записей, они бы делились примерно поровну на пять колонок