Как правильно выводить таблицы

ghost636

Новичок
вот есть у меня данные в базе данных..
в таком виде:
PHP:
REP_orgid	REPyear	 REPquarter		REP_REPTid	REPvalue	REP_USERid		REPdateUpdate
1			2013			1				1		1000			1		2013-04-18
1			2013			1				2		50			4		2013-04-19
1			2013			1				3		75			4		2013-04-20
1			2013			2				1		1100			1		2013-04-19
1			2012			4				1		9000			1		2012-12-21
.......	......и так далее для разных организаций,типов показателей, годов, кварталов.....

,где
REP_orgid- id организации
REPyear - год показателя
REPquarter -квартал показателя (в году четыре квартала)
REP_REPTid - айди показателя
REPvalue - значение показателя
REP_USERid - айди юзера который этот показатель задал
REPdateUpdate - время задавания значения


т.е. при выборке по организации получается вот такой массив:
PHP:
Array
(
    [0] => Array
        (
            [REPid] => 1
            [REP_orgid] => 1
            [REPquarter] => 1
            [REPyear] => 2013
            [REP_REPTid] => 1
            [REPvalue] => 10000
            [REP_USERid] => 1
            [REPdateUpdate] => 2013-04-18
            [REPtimeUpdate] => 01:23:00
        )

    [1] => Array
        (
            [REPid] => 2
            [REP_orgid] => 1
            [REPquarter] => 1
            [REPyear] => 2013
            [REP_REPTid] => 2
            [REPvalue] => 50
            [REP_USERid] => 4
            [REPdateUpdate] => 2013-04-19
            [REPtimeUpdate] => 11:20:33
        )

    [2] => Array
        (
            [REPid] => 3
            [REP_orgid] => 1
            [REPquarter] => 2
            [REPyear] => 2013
            [REP_REPTid] => 1
            [REPvalue] => 11000
            [REP_USERid] => 1
            [REPdateUpdate] => 2013-04-19
            [REPtimeUpdate] => 04:10:00
        )

    [3] => Array
        (
            [REPid] => 7
            [REP_orgid] => 1
            [REPquarter] => 1
            [REPyear] => 2013
            [REP_REPTid] => 3
            [REPvalue] => 75
            [REP_USERid] => 4
            [REPdateUpdate] => 2013-04-20
            [REPtimeUpdate] => 00:10:00
        )

    [4] => Array
        (
            [REPid] => 10
            [REP_orgid] => 1
            [REPquarter] => 4
            [REPyear] => 2012
            [REP_REPTid] => 1
            [REPvalue] => 9000
            [REP_USERid] => 1
            [REPdateUpdate] => 2012-12-21
            [REPtimeUpdate] => 17:57:13
        )

    [5] => Array
        (
            [REPid] => 11
            [REP_orgid] => 1
            [REPquarter] => 4
            [REPyear] => 2012
            [REP_REPTid] => 2
            [REPvalue] => 50
            [REP_USERid] => 1
            [REPdateUpdate] => 2013-04-21
            [REPtimeUpdate] => 17:57:13
        )

    [6] => Array
        (
            [REPid] => 12
            [REP_orgid] => 1
            [REPquarter] => 4
            [REPyear] => 2012
            [REP_REPTid] => 3
            [REPvalue] => 25
            [REP_USERid] => 1
            [REPdateUpdate] => 2012-04-08
            [REPtimeUpdate] => 17:58:44
        )

    [7] => Array
        (
            [REPid] => 13
            [REP_orgid] => 1
            [REPquarter] => 1
            [REPyear] => 2012
            [REP_REPTid] => 4
            [REPvalue] => 3
            [REP_USERid] => 1
            [REPdateUpdate] => 2013-04-01
            [REPtimeUpdate] => 17:58:44
        )

    [8] => Array
        (
            [REPid] => 14
            [REP_orgid] => 1
            [REPquarter] => 4
            [REPyear] => 2011
            [REP_REPTid] => 1
            [REPvalue] => 8000
            [REP_USERid] => 1
            [REPdateUpdate] => 2011-10-12
            [REPtimeUpdate] => 18:00:16
        )

    [9] => Array
        (
            [REPid] => 15
            [REP_orgid] => 1
            [REPquarter] => 4
            [REPyear] => 2011
            [REP_REPTid] => 2
            [REPvalue] => 60
            [REP_USERid] => 
            [REPdateUpdate] => 2013-04-21
            [REPtimeUpdate] => 18:00:16
        )

)

вопрос в следующем
каким образом, на страничку, вывести таблицу вида:
PHP:
2012 год:
квартал	ЧДД	ВВИ	ВНД	СО
1		1200	30	23	2	
2		1200	30	30	2	
3		1300	35	40	1	
4		1350	35	50	4	
2013 год:
квартал	ЧДД	ВВИ	ВНД	СО
1		1350	30	53	1


,где, ЧДД ВВИ ВНД СО - названия показателей по вот этим айди - REP_REPTid, берутся из другой таблицы
?
 
А что конкретно не получается? В смысле код-то где? Или за тебя написать?
 
Или за тебя написать?
ммм.. а было бы не плохо)))
но вообще я хотел спросить алгоритм чтоли..или типа того..


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

далее для вывода использую foreach по получившемуся массиву..

но это что-то сложновато.. пол дня можно провозится прежде чем допетрю как правильно все эти циклы сделать для преобразования.. и то даже не сам, а друг помогал.. путаюсь в них ужасно..
но даже это бы ничего, но таблица выведенная foreach`ем несвязна с заголовком таблицы - ЧДД, ВВИ, ВНД, СО которые берутся из другой таблицы.. как бы щас пока 4 параметра, не сложно хтмл код подогнать заголовок таблицы и значения параметров.. но вот не представляю как сделать вывод параметров динамическим.. к примеру показать только два параметра..или три...


в общем подумал может есть какойто способ по проще...
 
А, тебе нужно две таблицы объеденить?
Гугли - JOIN
Примерно так:
PHP:
SELECT table.*, other_table.* LEFT JOIN other_table on table.id = other_table.table_id
 
мм.. наверно нет.. не в этом дело..
щас тогда покажу как у меня получается
вот после преобразования того массива который у меня в первом 1ом посте этой темы получается такой массив:

PHP:
p_reports: Array
(
    [0] => Array
        (
            [2011] => Array  // ключем этих массов выступают года
                (
                    [1] =>    //  
                    [2] =>    // ключем этих массов выступают кварталы
                    [3] =>     // 
                    [4] => Array //
                        (
                            [1] => Array   // ключем этих массов выступают айди категории (1)
                                (
                                    [REPvalue] => 8000
                                    [REP_USERid] => 1
                                )

                            [2] => Array   // ключем этих массов выступают айди категории (2)
                                (
                                    [REPvalue] => 60
                                    [REP_USERid] => 
                                )

                        )

                )

        )

    [1] => Array
        (
            [2012] => Array
                (
                    [1] => Array
                        (
                            [4] => Array
                                (
                                    [REPvalue] => 3
                                    [REP_USERid] => 1
                                )

                        )

                    [2] => 
                    [3] => 
                    [4] => Array
                        (
                            [1] => Array
                                (
                                    [REPvalue] => 9000
                                    [REP_USERid] => 1
                                )

                            [2] => Array
                                (
                                    [REPvalue] => 50
                                    [REP_USERid] => 1
                                )

                            [3] => Array
                                (
                                    [REPvalue] => 25
                                    [REP_USERid] => 1
                                )

                        )

                )

        )

    [2] => Array
        (
            [2013] => Array
                (
                    [1] => Array
                        (
                            [1] => Array
                                (
                                    [REPvalue] => 10000
                                    [REP_USERid] => 1
                                )

                            [2] => Array
                                (
                                    [REPvalue] => 50
                                    [REP_USERid] => 4
                                )

                            [3] => Array
                                (
                                    [REPvalue] => 75
                                    [REP_USERid] => 4
                                )

                        )

                    [2] => Array
                        (
                            [1] => Array
                                (
                                    [REPvalue] => 11000
                                    [REP_USERid] => 1
                                )

                        )

                    [3] => 
                    [4] => 
                )

        )

)

вывожу на экран вот таким кодом:
PHP:
<table border=1>
<? foreach ($p_reports as $key=>$value) :
	if($key==0) echo '<tr>
			<th>Год</th>
			<th>Квартал</th>
			<th title="Чистый дисконтированный доход">ЧДД</th>
			<th title="Возврат на вложенные инвестиции">ВВИ</th>
			<th title="Внутренняя норма доходности">ВНД</th>
			<th title="Срок окупаемости">СО</th>
			</tr>';

	foreach ( $value as $k=>$v ){

		for ($i=1;$i<5;$i++){
			echo '<tr>';
			if($i==1) echo '<td rowspan="4"  width="40px">'.$k.'</td>';
			echo '<td>';
			echo $i;
			echo '</td>';
			for($j=1;$j<5;$j++){
				if(isset($v[$i][$j]['REPvalue'])) echo '<td>'.$v[$i][$j]['REPvalue'].'</td>';	
				else echo '<td> </td>';
			}
			echo '</tr>';
		}
	} ?>
		<td>
	</tr>
<? endforeach;?>
</table>

получается вот так:
111111.PNG

так вот.
тут заголовки я выставляю вручную:
PHP:
..		<th title="Чистый дисконтированный доход">ЧДД</th>
			<th title="Возврат на вложенные инвестиции">ВВИ</th>
			<th title="Внутренняя норма доходности">ВНД</th>
			<th title="Срок окупаемости">СО</th> ..
можно вывести форичем но с другого массива полученного из другого запроса.. сути не меняется..


какни-будь можно можно этот цикл вывода задать так, чтобы в заголовки вставлялись вставлялись айдишники категорий?? - ключи массива четвертого уровня?
PHP:
[4] => Array
                        (
                            [1] => Array  // вот тут 1 - айди категории
                                (
                                    [REPvalue] => 8000
                                    [REP_USERid] => 1
                                )

                            [2] => Array  // вот тут 2 - айди категории
                                (
                                    [REPvalue] => 60
                                    [REP_USERid] => 
                                )

                        )
а айдишники категрий пропустить через функцию которая выдет массив содержащий аббревиатуру и полное имя категории...?
функцию написал...
 
Вот вообще ничего не понятно. Не нужно никаких преобразований. У тебя есть таблица в бд - тебе ее нужно вывести. Все! Какие преобразования?
PHP:
<table>
    <tr>
        <th>Год</th>
        <th>Квартал</th>
        <th>ЧДД</th>
        <th>ВВИ</th>
        <th>ВНД</th>
        <th>СО</th>
    </tr>
    <?php foreach ($topic_first_post_array as $row): ?>
        <tr>
            <td><?php echo $row['REPyear'] ?></td>
            <td><?php echo $row['REPquarter'] ?></td>
            <td><?php echo $row['CHDD'] ?></td>
            <td><?php echo $row['VVI'] ?></td>
            <td><?php echo $row['VND'] ?></td>
            <td><?php echo $row['SO'] ?></td>
        </tr>
    <?php endforeach ?>
</table>
 
ну так там же все мало того что в разброс, так еще большинство полей не заполнены.
как ты предлагаешь так не получится же. приглядись к первому массиву после выборки.


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


там же, в первом массиве, один массив равняется одной записи значения, таких значений несколько(на данный момент 4), причем каждое значение приписывается каждому кварталу, каждого года..
PHP:
$test = array(
    array(
        'year' => 2012,
        'data' => 'boogaga'
    ),
    array(
        'year' => 2012,
        'data' => 'hello'
    ),
    array(
        'year' => 2012,
        'data' => 'world'
    ),
);
$result = array_reduce($test, function($result = array(), $val) {
    $result[$val['year']][] = $val;
    return $result;
});

Ну вот так отсортируй:)
 
Сверху