PHP в цикле / цикл по каждому элементу

0

У меня есть вопрос по-другому, чтобы сорвать этот код, потому что он не делает то, что я хочу.

Я создаю список форумов, в котором будет отображаться раздел под этой категорией. Ну, это проблема, поскольку вы можете видеть, что у меня есть оператор If() {} Else {}, который используется для размещения информации в этом списке, который я хочу. Проблема в том, что мне нужно добавить специальный класс в последний раздел под этой категорией, который будет называться last-tr. Теперь моя проблема в том, что вся информация выводит его на экран, но класс применяется только к последней строке, а теперь к последней строке всей категории, которую я ищу.

Так что-то вроде этого,

Welcome Center
   Introduce Yourself
   Say Hello To our Admins (last-tr)

Game
   COD
   BF4 (last-tr)

Code
   PHP
   Java
   PDO (last-tr)

но мой код дает мне

Welcome Center
   Introduce Yourself
   Say Hello To our Admins 

Game
   COD
   BF4 

Code
   PHP
   Java
   PDO (last-tr) <- Just that one.

Вот код

    <?php 
include '../../core/init.php'; 
include '../../includes/head.php';

//Getting Categories under Welcome

$db = DB::getInstance();
$user = New User();
$forum = New Forum();

$list = '';

$category = $db->query('SELECT * FROM forum_categories');
foreach ($category->results() as $category) {
    $list .= '<thead>';
    $list .= '<tr>';
    $list .= '<th class="titles">' . $category->title . '</th>';
    $list .= '<th>Last Post</th>';
    $list .= '<th>Topics</th>';
    $list .= '<th>Replies</th>';
    $list .= '</tr>';
    $list .= '</thead>';
    $list .= '<tbody>';
    $sections = $db->query("SELECT * FROM forum_section WHERE category_id = '$category->id'");
    foreach ($sections->results() as $section) {
        $x = 0;
        if ($x < $sections->count()) {
            $list .= '<tr>';
            $list .= '<td>';
            $list .= '<a href="/category.php?id='. $section->id .'">';
            $list .= '<img scr="/images/icons/iconmonstr/intro.png">';
            $list .= '</a>';
            $list .= '<a href="/category.php?id='. $section->id .'">' . $section->title . '</a>';
            $list .= '<span>' . $section->desc . '</span>';
            $list .= '</td>';
            $list .= '<td> Nasty </td>';
            $list .= '<td> 0 </td>';
            $list .= '<td> 0 </td>';
            $list .= '</tr>';
            $x++;
        }else {
            $list .= '<tr class="last-tr">';
            $list .= '<td>';
            $list .= '<a href="/category.php?id='. $section->id .'">' . $section->title . '</a>';
            $list .= '</td>';
            $list .= '<td> Nasty </td>';
            $list .= '<td> 0 </td>';
            $list .= '<td> 0 </td>';
            $list .= '</tr>';
        }
    }
    $list .= '</tbody>';
}
?>
<link rel="stylesheet" href="/css/fourms.css">
<title>Forums</title>
</head>
<body>
<?php include '../../includes/header.php'; ?>
    <section id="main_section">
        <section id="main_content">
            <div id="forum-section">
                <table class="forumlist">
                    <?php echo $list; ?>

                </table>
            </div>
        </section>
    </section>
<?php include('../../includes/footer.php'); ?>
  • 3
    Я настоятельно рекомендую визуализировать HTML, выводя напрямую, а не конкатенируя строку.
  • 0
    Ваше меню останется прежним или будет меняться время от времени?
Показать ещё 1 комментарий
Теги:
oop
pdo

2 ответа

2

Ваш if-statement должен быть, if ($x < $sections->count()-1) потому что последний индекс массива всегда считается -1 из-за начала с 0.

ИЛИ

Вы также можете исправить это здесь, запустив $x в 1, поскольку вы используете foreach со счетчиком на стороне, так что это не похоже на то, что вы получите ошибку индекса. Другими словами:

foreach ($sections->results() as $section) {
    $x = 1;
    if ($x < $sections->count()) {
        ...
        $x++;
    }else {
        ...
    }
}

Но переход с первым вариантом, вероятно, более прямолинейный.

  • 0
    Он по-прежнему только добавляет класс last-tr в последний цикл, как бы я мог добавить его после каждого раздела. Видишь, о чем я
1

Вы тестируете свой общий класс, а не данные в классе.
$sections-> count() подсчитывает все разделы, а не записи в одном разделе, с которым вы имеете дело.
Вам нужно проверить количество сингулярного сечения
Так что если бы вы
$ sectionsAll = array (
sectionOne = массив (1, 2, 3),
sectionTwo = массив (1, 2, 3),
sectionThree = массив (1, 2, 3)
);
Вы в настоящее время тестируете на $ sectionsAll, вам нужно проверить раздел Section, раздел Two, sectionThree

  • 0
    Мне нужно добавить этот класс в этой последней строке, потому что он имеет разные стили CSS

Ещё вопросы

Сообщество Overcoder
Наверх
Меню