Заполнение записями в таблице HTML - PullRequest
0 голосов
/ 09 ноября 2010

Пользовательская функция php возвращает набор записей из запроса mysql.

Мне нужно заполнить таблицу с двумя столбцами, имеющую равное количество или сбалансированную между двумя.

Я знаю, что мы можем разделить число столбцов на количество строк, а затем использовать цикл для заполнения каждого тд соответственно.

Какие-либо предложения или наиболее практичный способ отображения наборов записей в таблицах, организованных в соответствии с их размерами?

В настоящее время не используются шаблоны.

В основном необходимо контролировать тег TD, чтобы он был эхо или нет и заполнен.

Пример кода:

$col_num = 2; //Number of colums to parse data onto.

$count_r = mysql_num_rows($result)/$col_num;

echo '<table style="width:400px;border:3px solid green;"><tr><td>'; 

$ui=1;

while($row = mysql_fetch_array($result))
{                            
    if($ui<$count_r)
        {

            echo '<input disabled type="checkbox" value="$row[id]"'; $this->ischecked($uid,$row[id]); echo "/>".$row['name'].'<br>'."\r\n";

        }
    $ui++;
} 

//FIRST COLUMN SET

echo '</td>';

echo '<td>';

//SECOND COLUMN SET


echo '</td></tr></table>';

Ответы [ 2 ]

1 голос
/ 09 ноября 2010

Я бы рекомендовал использовать неупорядоченный список - <ul> и применить атрибут CSS float к его элементам списка (<li>). Таким образом, вам не придется беспокоиться о подсчете количества записей.

Просто выведите каждую запись в <li> и установите их все на float: left;.

Затем ограничьте высоту <ul>, чтобы она была достаточно короткой, чтобы дополнительные <li> s переместились в новый столбец.

Как указывал @Steve, вам также нужно установить постоянную ширину <li>, чтобы столбцы были согласованными. И сделайте ширину вашего <ul> более чем в два раза и менее чем в три раза больше ширины <li>.

Основной способ сделать это - позвонить по вашему запросу mysql_num_rows(). Умножьте результат на высоту каждого <li>, затем разделите на два, и это будет высота вашего <ul>. Это сделает каждый столбец равной высоты.

Вы могли бы также сделать это с <div> с (по одному <div> для каждого элемента, все в одной глобальной <div>).

Но использование списка является предпочтительным способом отображения списка информации в HTML (если только информация не является табличной по природе и требует нескольких столбцов на поле, а у вас нет и нет).

Если вам нужна более подробная помощь, на эту тему есть замечательная статья по веб-стандартам Opera 10 *

.
1 голос
/ 09 ноября 2010

Если вы не возражаете против порядка ваших записей, вы можете просто сделать (при условии, что у вас есть результаты в массиве с именем $result) следующее:

...
echo "<table>";
for($i=0;$i<count($result);$i+=2):
    echo "<tr>";
        echo "<td>{$result[$i]['field']}</td>";
        echo "<td>{$result[$i+1]['field']}</td>";
    echo "</tr>";
endfor;
echo "</table>";

Я не знаю, является ли это лучшим способом сделать это, но так я поступил бы в вашем случае. Имейте в виду, что я не проверяю, есть ли какие-либо реальные результаты, мы предполагаем, что это так. Чтобы проверить, установлен ли $results, вы можете использовать оператор if, проверяющий, например, номер счета.

Примечание Замените for($i=0;$i<count($result);$i+=2): на for($i=0;$i<count($result);$i+=2){ и endfor; на } для традиционно отформатированного кода.

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