[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод из таблицы MySql с транспонированием - как сделать?
wfire
Такая вот задача - вывести табличку mysql в структуру <table></table> таким образом, чтобы записи тыли не с строках, а в столбцах, т.е. сделать транспонирование. При этом кол-во и имена полей таблицы заранее не известны.
Вот этот код выводит табл. традиционным способом:
$res = mysql_list_fields($dbName, $table_name);
while($row = mysql_fetch_array($dates)) {
echo "<tr>";
for($i = 0; $i < mysql_num_fields($res); $i++) {
echo "<td class=c_cell>";
echo $row[$i];
echo "</td>";
}
echo "</tr>";
}

А вот как вывести записи по столбцам - не могу сообразить...



Спустя 17 минут, 52 секунды (13.10.2007 - 08:24) vasa_c написал(а):
Считать результат в двухмерный массив, потом в двойном цикле вывести его по столбцам.

Спустя 4 минуты, 48 секунд (13.10.2007 - 08:29) wfire написал(а):
Да, общий принцип мне понятен, конкретная реализация не получается... Запутался с циклами... :-)

Спустя 28 минут, 12 секунд (13.10.2007 - 08:57) vasa_c написал(а):
Код
print '<table>';
for ($y = 0; $y < [количество полей в одной записи — высота таблицы]; $y++) {
    print '<tr>';
    for ($x = 0; $x < [количество записей — ширина таблицы]; $x++) {
        print '<td>'.mysql_result($res, $x, $y).'</td>';
    }
    print '</tr>';
}
print '</table>';

Спустя 12 минут, 17 секунд (13.10.2007 - 09:09) wfire написал(а):
Вот что у меня получается:

$dates = mysql_query("SELECT * FROM $table_name", $dbc);
global $dbName;
$res = mysql_list_fields($dbName, $table_name);
echo "<table border='0' cellspacing='0' cellpadding='0' border='0'><tr><td bgcolor='#616161'>";
echo "<table width='100%' cellspacing='1' cellpadding='1' border='0'>";
for($y = 0; $y < mysql_num_fields($res); $y++) {
echo "<tr>";
for($x = 0; $x < mysql_num_rows($res); $x++) {
echo "<td class=c_cell>".mysql_result($dates, $x, $y)."</td>";
}
echo "</tr>";
}
echo "</tr></table></td></tr></table>";

И ничего не выводит в результате... Где может быть ошибка?

Спустя 5 минут, 39 секунд (13.10.2007 - 09:15) wfire написал(а):
всё, нашел сам:
mysql_num_rows($res) -> mysql_num_rows($dates)
работает :-)
спасибо огромное :-)

Спустя 9 минут, 12 секунд (13.10.2007 - 09:24) wfire написал(а):
Теперь, правда, другая проблема возникла - надо слева приделать вертикальный столбик - заголовок полей. А русские названия полей хранятся в другой табличке... Здесь у меня пока даже мыслей нет... Как это можно сделать?

Спустя 3 часа, 32 минуты, 57 секунд (13.10.2007 - 12:57) emp написал(а):
Считать из другой таблицы и записать результат в тот же массив.

Спустя 3 часа, 30 минут, 38 секунд (13.10.2007 - 16:28) wfire написал(а):
$res = mysql_list_fields($dbName, $table_name);

А что, разве в этот массив можно что-то добавлять/удалять?
Каким образом?


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.