|
|
|
|
|
для: RV
(22.11.2007 в 13:56)
| | какой процент разработчиков владеют этой технологией? | |
|
|
|
|
|
|
|
для: Axxil
(22.11.2007 в 13:18)
| | помоему это надо реализовывать на xls | |
|
|
|
|
|
|
| Продолжаю публиковать интересные, на мой взгляд, решения.
На этот раз автоматическая генерация сортировки в таблице.
Заодно показаны какие горизонты открывает работа с буфером в php.
<?
// Страница перед выводом в браузер считывается в буфер и проходит через данную функцию.
// Здесь текст в ячейках заголовка таблицы меняется на линки сортировки
function callback($buffer){
$link = preg_replace('|&orderby=[^&]*|is','',$_SERVER['REQUEST_URI']);
preg_match('|&direction=([^&]*)|is',$link,$out);
if($out[1] == 'asc') $link = str_replace('&direction='.$out[1],'&direction=desc',$link);
elseif($out[1] == 'desc') $link = str_replace('&direction='.$out[1],'&direction=asc',$link);
else $link .= '&direction=desc';
$buffer = preg_replace('|<td(.*)orderby="(.*)"(.*)>(.*)</td>|isU',
'<td\\1 \\3><a href="'.$link.'&orderby=\\2">\\4</a></td>',
$buffer);
}
ob_start('callback');
// Определяем параметры сортировки по умолчанию.
define('_DEFAULT_SORT','t1.entity_id');
define('_DEFAULT_DIRECTION','ASC');
// Какая-то функция отвечающая за контроль входящи параметров. Проверяет кавычки и прочие запрещённые символы
$_GET = clear($_GET);
// Определяем параметры сортировки
$orderby = (isset($_GET['orderby']))?$_GET['orderby']:_DEFAULT_SORT;
$direction = (isset($_GET['direction']))?$_GET['direction']:_DEFAULT_DIRECTION;
// Для наглядности показан запрос объединяющий две таблицы. Какой список он выводит, думаю ясно из самого запроса
$query = mysql_query('SELECT
t1.enatity_id,
t1.create_date,
t1.answer_date,
t2.client_name
FROM entities t1
LEFT JOIN clients t2 ON t2.client_id=t1.client_id
ORDER BY '.$orderby.' '.$direction);
$list = array();
while($r = mysql_fetch_assoc($query)){
$list[] = $r;
}
?>
|
Строим собственно таблицу.
<table>
<tr>
<!-- В теги td помещаем инструкции сортировки.
По какому полю таблицы сортировать.
Пусть невалидно, зато удобно :) -->
<td class="header" orderby="t1.entity_id">ID</td>
<td class="header" orderby="t1.create_date">Отправлено</td>
<td class="header" orderby="t1.answer_date">Отвечено</td>
<td class="header" orderby="t3.c_name">Клиент</td>
</tr>
<?foreach($list as $item){?>
<tr>
<td class="cell"><?=$item['entity_id']?></td>
<td class="cell"><?=$item['create_date']?></td>
<td class="cell"><?=$item['answer_date']?></td>
<td class="cell"><?=$item['client_name']?></td>
<?}?>
</table>
|
Буду рад конструктивной критике. | |
|
|
|
|