Получение каждого третьего результата в новом TR - PullRequest
0 голосов
/ 03 января 2012

Я получу головную боль от этого. У меня есть простой запрос и простая таблица, которую я генерирую во время цикла while запроса. Я хочу создать новую строку после каждого третьего результата.

$customers_num=8; // This is actually mysql_numrows($result) never mind; 

$i=0;
while ($i < $customers_num) {
    if($i % 3 === 0) {
        print '<tr>';
    }

    print '<td style="width: 30%;"></td>';

    if($i % 3 === 0) {
        print '</tr>';
    }

    $i++;
}

Если вопрос не ясен, из-за моего английского я мог бы попытаться улучшить вопрос, чтобы быть более точным.

Проблема в том, что я закрываю <tr> сразу после того, как открываю его: S Мне нужно открыть его, положить в него три TD, а затем закрыть его ...

Ответы [ 3 ]

1 голос
/ 03 января 2012

Это должно позволить вам открыть tr и вывести в нем три td.

$customers_num=8; // This is actually mysql_numrows($result) never mind; 
$data; // an assumed variable containing your data.
for($i = 0; i < $customers_num; $i++){
    echo '<tr>';
    for($j = $i; $j < $i + 3 && $j < $customers_num; $j++){
            echo '<td style="width: 30%;">' . $data[$j] . '</td>';
    }
    echo '</tr>';
}

Пожалуйста, не используйте предложенную вами логику нечетного модуля.Просто есть внутренний цикл для каждого необходимого тд.Это позволяет вам легко изменить свою логику в будущем.Так что, возможно, в будущем вы сможете легко поменять его на 5 ячеек.

1 голос
/ 03 января 2012

Я думаю, вот чего вы хотите достичь:

$customers_num=8; // This is actually mysql_numrows($result) never mind; 

$i=1;
while ($i < $customers_num) {

    if($i == 1) {
        print '<tr>';
    }

    print '<td style="width: 30%;"></td>';

    if($i == 3 ) {
        print '</tr>';
        $i=0;//next inc. to 1
    }
    $i++;
}

if($i  != 1 )
{
  echo "</tr>";
}
1 голос
/ 03 января 2012

Прежде всего, вы забыли увеличить $i.Это должно сделать трюк:

$customers_num=8; // This is actually mysql_numrows($result) never mind; 

$i=0;
while ($i < $customers_num) {

    if($i % 3 === 0) {
        if ($i > 0) print "</tr>"; //not first row
        if ($i < $customers_num - 1) print '<tr>'; //not last row
    }

    print '<td style="width: 30%;"></td>';

    $i++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...