как можно поместить значение в два столбца? - PullRequest
0 голосов
/ 30 августа 2011

как можно список значений, которые выбирают из базы данных, поместить в два столбца вместе PHP ?

Пример:

значения выбора базы данных:

  • Интернет
  • Примечания к игре
  • Интернет
  • бассейн
  • Кофе
  • Примечания к игре

я хочу вот так:

enter image description here

Ответы [ 3 ]

1 голос
/ 30 августа 2011

Ряд-первый заказ

<table>
<?php
    $left = true;
    foreach ($values as $value){
        if ($left)
            echo "<tr>";
        echo "<td>$value</td>";
        if (!$left)
            echo "</tr>";
        $left = !$left;
    }
?>
</table>

При заказе по столбцу (как в вашем примере) вам придется задействовать CSS, и это очень сложно. Что-то вроде

<div class='inline_div'>
<?php 
    $middle = count($values)/2+1;
    $count = 0;
    foreach ($values as $value){
        if ($count==$middle)
            echo "</div><div class='inline_div'>";
        echo "$value<br/>";
        ++$count;
    }
?>
</div>

inline_div это что-то вроде .inline_div {display:inline; float:left}. Но это определенно не будет работать, как ожидалось, я не мастер CSS. IE точно не поддерживает display:inline.

0 голосов
/ 30 августа 2011

Простым решением было бы использовать два div. Как прокомментировал предыдущий постер, сначала нужно посчитать элементы. Предположим, что элементы, которые вы хотите отобразить, находятся в массиве $items Вы можете использовать этот вид кода

<?php
$divItemCount = (count($items)%2) ? count($items)/2 + 1 : count($items)/2;
?>
<div id="leftdiv" style="width: 30%;">
<ul>
<?php
for($i=0; $i<$divItemCount; $i++) {
    echo '<li>'. $items[$i] .'</li>';
}?>
</ul></div><div id="rightdiv" style="width: 30%; float:left"><ul>
<?php
for($j=$i; $j<count($items); $j++) {
    echo '<li>'. $items[$j] .'</li>';
}?>
</ul></div>

Я не проверял код, поэтому возможны ошибки. Вы можете использовать свойство border в div для создания пользовательского разделителя между двумя списками.

0 голосов
/ 30 августа 2011

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

Обходным путем будет создание двух отдельных таблиц (каждая из которых содержит один столбец), а затем их в одной таблицес двумя столбцами:

<?php
$list=array('a','b','c','d','e','f');
$midpoint=floor(count($list)/2);
$tableHeader='<table width="100%">';
$tableFooter='</table>';
$leftTable=$tableHeader;
$rightTable=$tableHeader;
for ($c=0; $c<$midpoint; $c++)
{
    $leftTable.='<tr><td width="100%">'.$list[$c].'</td></tr>';
}
$leftTable.=$tableFooter;
for ($c=$midpoint; $c<count($list); $c++)
{
    $rightTable.='<tr><td width="100%">'.$list[$c].'</td></tr>';
}
$rightTable.=$tableFooter;
$mainTable='<table><tr><td width="50%">'.$leftTable.'</td><td width="50%">'.$rightTable.'</td></tr></table>';
echo $mainTable;
?>

Или что-то в этом роде.Я не тестировал этот код, но он был бы довольно близок (возможно, придется скорректировать значения в разделах "for"

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