2015-09-27 1 views
-1

Я хочу вывести список из нескольких тысяч элементов в таблицу с 5 столбцами. Все работает, кроме как echo в последних </tr>. Я попытался несколько вариантов кода ниже, но либо закончил с одним столбцом, либо неограниченными столбцами. Если это всего лишь два столбца, я могу сделать это по-другому. но мне нужно 5 для оптимизации пространства. Таким образом, вопрос, как я могу вывести список имен файлов в 5 столбцов с помощью PHPВыход php foreach в таблицу, укажите номер столбца

<?php 
$i=0; 
foreach ($files as $file) { 
if ($i==4) { echo '</tr>'; 
    $i=0; 
} 
elseif ($i=0) { echo '<tr>'; 
} 
echo '<td> 
     <div>'.$file.'</div> 
    </td>'; 

$i++; 
} 
?> 

Пожалуйста помогите

+0

что ваш ожидаемый результат? –

+0

@raveenanigam Таблица с 5 столбцами имен файлов – Kilisi

+0

acc .. to ur code u'll get 1 checkbox и тег в каждом 5 td's ... в чем ваша проблема сейчас –

ответ

1

Пожалуйста, попробуйте использовать этот код:

echo '<table><tr>'; 
for($i=0; $i<count($files); $i++) { 
    if ($i%5 == 0) { 
     echo '</tr>'; 
     echo '<tr>'; 
    }  
    echo '<td> 
      <div class="select-all-col"><input name="select[]" type="checkbox" class="select" value="'.$files[$i].'"/> 
      <a href="download-ui.php?name='.$foldername."/".$files[$i].'" style="cursor: pointer;">'.$files[$i].'</a></div> 
      <br /> 
     </td>'; 
} 
echo '</table>'; 

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

+0

ошибок нет в журнале, но ничего не выводится – Kilisi

+0

Отредактировано, забыли счет ($ files). – runz0rd

1

Как я прокомментировал и упомянул подобную тему, здесь у вас есть пример, чтобы получить то, что вы хотите. Это создает таблицу с правильным количеством столбцов и строками.

$td = array(); 
$cols = 5; 

foreach($files as $i => $file) { 

    if ($i != 0 && $i%$cols == 0) { 
     $td[] = '<td> ' . implode('</td><td>', $tdata) . '</td>'; 
     $tdata = array(); 
    } 

    $tdata[] = '<div class="select-all-col"> 
        <input name="select[]" type="checkbox" class="select" value="' . $file . '"/> 
        <a href="download-ui.php?name=' . $folderName . '/' . $file . '" style="cursor: pointer;">' . $file . '</a> 
       </div> 
       <br />'; 

} 

// fill up empty cols at the end IF cols vs data dont add up 
if (!empty($tdata)) { 
    $create = $cols - count($tdata); 
    for ($i = 1; $i <= $create; $i++) { 
     $tdata[] = ' - '; 
    } 
    $td[] = '<td> ' . implode('</td><td>', $tdata) . '</td>'; 
} 

echo '<table><tr>' . implode('</tr><tr>', $td) . '</tr></table>'; 

Или в вашем пути, это также работает, но оставляет неправильное количество colums в конце концов, если список данных DonT совпасть с заполнением до 5 колонок

$i = 0; 
$tdata = false; 

foreach ($files as $file) { 

    if ($i != 0 && $i%5 == 0) { 
    $tdata .= '</tr><tr>'; 
    } 

    $tdata .= '<td> 
       <div class="select-all-col"><input name="select[]" type="checkbox" class="select" value="'.$file.'"/> 
       <a href="download-ui.php?name='.$folderName."/".$file.'" style="cursor: pointer;">'.$file.'</a> 
       </div> 
       <br /> 
      </td>'; 

    $i++; 
} 

echo '<table><tr>' . $tdata . '</tr></table>'; 
+0

второе решение, безусловно, пригодится, я не беспокоюсь о том, что последний ряд отличается – Kilisi

Смежные вопросы