2015-01-29 3 views
-2

Я пытаюсь отформатировать вывод цикла while в php. При отображении результатов цикла while это всего лишь один длинный список. Я хотел бы разбить его на столбцы. Вот мой код:Форматирование цикла while в php

$sql = "SELECT * FROM refdb ORDER BY referral"; 
$result = mysqli_query($con,$sql)or die(mysqli_error()); 
echo "<form action='test2.php' method='get'>"; 
while($row = mysqli_fetch_array($result)) { 

echo '<input type="checkbox" name="tag[]" value="' . $row[referral] . '">' . $row[referral] . '</label></br>'; 


} 

echo '<input type="submit" name="submit" Value="Submit"/>'; 

Он возвращает результаты как опцию флажка в форме.

(Это мой первый пост, извините, если я искажаюсь его. Любая помощь будет принята с благодарностью)

+0

Самый простой ответ взять
из эхо строки. – trogers1884

+0

В чем вопрос? Похоже, вы ищете стиль вашей разметки, который будет выполняться на HTML и CSS, а не на PHP. – David

+0

Возможный дубликат [Сортировка массива PHP в столбцы] (http://stackoverflow.com/questions/3428723/sorting-a-php-array-into-columns) – Machavity

ответ

0

Это на контексте шаблонного или вывода. Когда в этом контексте лучше использовать альтернативные структуры управления синтаксиса (если вы не внутри функции/метода - который вы не должны быть):

<?php while(EXPRESSION): ?> 
<div class="somehtml"> 
    <?php echo $something ?> 
    <a href="<?php echo $theURl ?>"><?php echo $theLabel ?></a> 
</div> 
<?php endwhile ?> 

Теперь с точки зрения вашей конкретной проблемы ... Если предположить, размер результирующего набора разумно я бы за ними все в массив первой:

$results = array(); 
while($row = mysqli_fetch_array($result)) { 
    $results[] = $row; 
} 

После этого вы можете использовать array_chunk, чтобы превратить его в массив столбцов:

$columns = array_chunk($results, 5); 

Тогда вы можете выводить их:

<?php foreach($columns as $rows): ?> 
    <div class="col"> 
    <?php foreach($rows as $row): ?> 
     <input type="checkbox" name="tag[]" value="<?php echo $row[referral]?>"> 
     <label><?php echo $row[referral] ?></label></br> 
    <?php endforeach; ?> 
    </div> 
<?php endforeach; ?> 
+0

спасибо, что это похоже на то, что мне нужно Я попробую его – tntate786

+0

Я не то, что я испортил, но это не работает для меня. Он по-прежнему отображается как одна длинная колонна. вместо нескольких столбцов. – tntate786

+0

Ну, вам нужно будет стилизовать 'div', содержащий элементы, иначе он появится как один длинный столбец. – prodigitalson

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