Автор Тема: поворот таблицы на 90 градусов  (Прочитано 7834 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Megalord

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
поворот таблицы на 90 градусов
« : 25 Марта 2007, 23:14:02 »
есть MySQL БД нужно выбрать из таблицы данные и перед выводом на экран развернуть таблицу
должно быть примерно так:

id | title | param1 |param2 | param3
1 | a     | a1        |a2        |a3
2 |  b    | b1        |b2       |b3
3 | c     | c1        |c2        |c3

<>

id         | 1 | 2 | 3
title      | a | b | c
param1 |a1|b1|c1
param2 |a2|b2|c2
param3 |a3|b3|c3

Оффлайн brainkiller

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 527
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
поворот таблицы на 90 градусов
« Ответ #1 : 26 Марта 2007, 09:59:03 »
Первое, что приходит в голову - значения записать в массив, а потом по нему еще раз циклом пройти.

Оффлайн Megalord

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
поворот таблицы на 90 градусов
« Ответ #2 : 26 Марта 2007, 11:45:25 »
Цитировать
brainkiller:
Первое, что приходит в голову - значения записать в массив, а потом по нему еще раз циклом пройти.


про то что для начала нужно все запихнуть в массив понятно
но просто не хватает фантазии как этот массив потом развернуть
может есть какая функция для поворота массива или придется циклом каждое значение переставлять?

Оффлайн brainkiller

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 527
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
поворот таблицы на 90 градусов
« Ответ #3 : 26 Марта 2007, 14:46:07 »
[OFF]Ага, прикольная была бы функция: array_rotate($array, 90); :)[/OFF]

К сожалению, просто повернуть его вряд ли получится.

Можно пойти следующим путем. Вначале формируем двумерный массив со значениями примерно такого вида:

$a[0][0]=\'id\'; $a[0][1]=\'title\', ... , $a[0][n]=\'paramN\'
$a[1][0]=\'1\'; $a[1][1]=\'a\', $a[1][2]=\'a1\', ... , $a[1][n]=\'aN\'
$a[2][0]=\'2\'; $a[2][1]=\'b\', $a[2][2]=\'b1\', ... , $a[2][n]=\'bN\'
...
$a[m][0]=\'m\'; $a[m][1]=\'x\', $a[m][2]=\'x1\', ... , $a[m][n]=\'xN\'

Естественно, делаем это не вручную, а вложенным циклом, меняя во внешнем цикле значение m, а во внутреннем - n.

А потом выводим содержимое массива, меняя во внешнем цикле значение n, а во внутреннем - m:

for($i=0; $i    for($j=0; $j        echo $a[$j][$i].\' | \';
    }
    echo \'
\';
}

Код не проверял, но алгоритм примерно такой.

Оффлайн new_coder

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 33
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
поворот таблицы на 90 градусов
« Ответ #4 : 28 Марта 2007, 17:02:42 »
просто формируешь вывод по другому
ихмо нет лишнит затрат времени

	
$sql_res mysql_query("SELECT * FROM program");
	

	
$max mysql_num_rows($sql_res);
	

	
for(
$i 0$i $max$i++)
	
{
	
	
$res[] = mysql_fetch_assoc($sql_res);
	
}
	

	
$HTML_TABLE .= "<table border=\'1\'>";
	
	
foreach(
$res[0] as $key => $value)
	
	
{
	
	
	
$HTML_TABLE.="<tr>
	
	
	
	
	
	
	
	
<td>"
.
	
	
	
	
	
	
	
	
	
	
$key
	
	

	
	
	
	
	
	
	
	
.
"</td>";
	
	
	
for(
$i 0$i $max$i++)
	
	
	
{
	
	
	
	
$HTML_TABLE.="<td>".
	
	
	
	
	
	
	
	
$res[$i][$key]
	
	
	
	
	
	
	
.
"</td>";
	
	
	
}
	
	
	
$HTML_TABLE.="</tr>";
	
	
}
	
	
$HTML_TABLE .= "</table>";

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
поворот таблицы на 90 градусов
« Ответ #5 : 02 Апреля 2007, 13:09:18 »
можно еще запрос по-другому сформировать через селфджойны
ну, будем исповедоваться?

Оффлайн new_coder

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 33
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
поворот таблицы на 90 градусов
« Ответ #6 : 03 Апреля 2007, 09:34:47 »
интересный вариант. AliMamed черкани пример

Оффлайн Akvar

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
поворот таблицы на 90 градусов
« Ответ #7 : 16 Мая 2007, 22:18:08 »
Очень часто использую такое...

if ( ($result=mysql_query(\'SELECT * FROM db_name\'))!==false and (mysql_num_rows($result)>0)){
	
for ($data=array(); $row=mysql_fetch_assoc($result); )
	
	
foreach ($row as $key=>$val) $data[$key][]= $val!==\'\' ? $val : \' \';

	
echo \'<table border=1>\';
	
foreach ($data as $key=>$val) echo \'<tr><td><b>\'.$key.\'</b></td><td>\'.implode(\'</td><td>\',$val).\'</td></tr>\';
	
echo \'</table>\';
}


Но, сколько строк и столбцов ты выводишь ?
(просто если очень много, то прийдется вначале пользоваться MySQL решением - а выводить уже порядно - готовую таблицу )
« Последнее редактирование: 16 Мая 2007, 22:24:13 от Akvar »
php-программист

Оффлайн Akvar

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 34
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
поворот таблицы на 90 градусов
« Ответ #8 : 05 Июля 2007, 13:33:01 »
Так, сколько строк и столбцов ты выводишь ?
нужно MySQL решение?
php-программист

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28