холивар! PHP: <? ob_start(); $cnf=array( "db_host"=>"", "db_name"=>"", "db_pass"=>"", "db_encode"=>"cp1251", "db_user"=>"", "table_name"=>"", ); $db_link=@mysql_connect($cnf['db_host'],$cnf['db_user'],$cnf['db_pass']) or trigger_error("Не могу подключится к mysql",E_USER_ERROR); @mysql_select_db($cnf['db_name'],$db_link) or trigger_error("БД не найдена",E_USER_ERROR); mysql_query("SET NAMES `{$cnf['db_encode']}`"); $_GET['field']=!$_GET['field']?false:$_GET['field']; $sql=mysql_query("SELECT * FROM `{$cnf['table_name']}` ".($_GET['field']?"ORDER BY ".mysql_real_escape_string($_GET['field'])." ".($_GET['desc']?"DESC":"") :"")) or trigger_error("Неправильный запрос к БД <br>".mysql_error(),E_USER_ERROR); print "<table border=1 align=center>"; if(mysql_num_rows($sql)){ $i=0; while($row=mysql_fetch_assoc($sql)){ print "<tr>"; if(!$i){ $fields=array_keys($row); foreach($fields as $key=>$val){ print "<td>"; if($_GET['field']==$val) print $val; else print "<a href='{$_SERVER['PHP_SELF']}?field={$val}'>{$val}</a>"; print "<br> "; if(!$_GET['desc'] && $_GET['field']==$val) print " <a href='{$_SERVER['PHP_SELF']}?desc=1&field={$val}'>Up</a> <b>Down</b>"; else if($_GET['field']==$val) print " <b>Up</b> <a href='{$_SERVER['PHP_SELF']}?field={$val}'>Down</a>"; else print " <a href='{$_SERVER['PHP_SELF']}?desc=1&field={$val}'>Up</a> <a href='{$_SERVER['PHP_SELF']}?field={$val}'>Down</a>"; print "</td>"; } print "<tr>"; } foreach($row as $key=>$val) print "<td>{$val}</td>"; $i++; } }else{ print "<tr><td>Ошибка: Нет данных в таблице</td>"; } print "</table>"; ob_end_flush(); ?> Зы. Фии какая на форуме подсветка страшная
Мой варант, немного длиннее зато можно выбрать таблицу в процессе работы скрипта и есть проверка на ошибки index.php: PHP: <?php require_once dirname(__FILE__).'/db.php'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru"> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-language" content="ru-RU" /> <title>Работа с БД</title> <style type="text/css"> p.error{ color: red; } </style> </head> <body> <?php try{ $db = new DBViewer(); } catch(Exception $e){ echo '<p class="error">Неверные данные для коннекта к БД</p>'; } $table = isset($_GET['table']) && $db->tableExist($_GET['table']) ? $_GET['table'] : 0; $html = ''; // Таблица не выбрана, выводим список таблиц. if(!$table){ $tables = $db->getTables(); if(!empty($tables)){ $html = '<h2>Выберите таблицу:</h2><ul>'; foreach($tables as $table){ $html .= '<li><a href="index.php?table='.$table.'">'.$table.'</a></li>'; } $html .= '</ul>'; } else{ $html = '<p class="error">В базе данных таблицы отсутствуют.</p>'; } } // Таблица выбрана вывводим таблицу else{ $sortColumn = isset($_GET['column']) ? $_GET['column'] : null; $sortOrder = isset($_GET['order']) && $_GET['order'] == 'asc' ? 'asc' : 'desc'; $rows = $db->getTableData($table, $sortColumn, $sortOrder); $headerTds = array_keys($rows[0]); // Формируем данные для вывода $html2Tbody = ''; foreach($rows as $row){ $html2Tbody .= '<tr>'; foreach($row as $td){ $html2Tbody .= '<td>'.$td.'</td>'; } $html2Tbody .= '</tr>'; } // Формируем заголовок $html2Thead = '<tr>'; foreach($headerTds as $colName){ if($sortColumn == $colName){ if($sortOrder == 'asc'){ $sort = 'по возрастанию <a href="index.php?table='.$table.'&column='.$colName.'&order=desc">по убыванию</a>'; } else{ $sort = '<a href="index.php?table='.$table.'&column='.$colName.'&order=asc">по возрастанию</a> по убыванию'; } } else{ $sort = '<a href="index.php?table='.$table.'&column='.$colName.'&order=asc">по возрастанию</a> <a href="index.php?table='.$table.'&column='.$colName.'&order=desc">по убыванию</a>'; } $html2Thead .= '<th>'.$colName.'<br />'.$sort.'</th>'; } $html = '<table><thead>'.$html2Thead.'</thead><tbody>'.$html2Tbody.'</tbody></table>'; } echo $html; ?> </body> </html> config.php PHP: <?php /** * Конфигурация для работы с БД */ return array( // Хост 'host'=>'localhost', // Имя пользователя 'user'=>'root', // Пароль 'pass'=>'pass', // Название Базы данных 'db'=>'okpacka', // Кодировка 'encode'=>'utf8' ); ?> db.php PHP: <?php /** * Выводим данные по таблицам и содержимое собственно таблиц. * Быдло код инсайд. * * @author akrinel * @copyright Граждане планеты Земле. И Бендер. */ class DBViewer{ /** * Ссылка на ресурс работы с БД * * @var resource */ private $connect; public function __construct(){ $confFilePath = dirname(__FILE__).'/config.php'; if(!file_exists($confFilePath)){ throw new Exception; } $params = require_once $confFilePath; $this->connect = mysql_connect($params['host'], $params['user'], $params['pass']); if(!$this->connect){ throw new Exception; } if(!mysql_select_db($params['db'], $this->connect)){ throw new Exception; } // Если таблица не в формате UTF-8 закоментировать mysql_query('SET NAMES '.$params['encode'], $this->connect); } /** * Проверяем существует ли данная таблица * * @param String $tableName название таблицы * @return bool */ public function tableExist($tableName){ $tableName = mysql_escape_string($tableName); $result = mysql_query('SHOW TABLES LIKE "'.$tableName.'"', $this->connect); return mysql_num_rows($result) == 1 ? true : false; } /** * Отдаем список таблиц * * @return Array */ public function getTables(){ $tables = array(); $result = mysql_query('SHOW TABLES'); while($row = mysql_fetch_row($result)){ $tables[] = $row[0]; } return $tables; } /** * Получаем данные из таблицы * * @param String $tableName название таблицы * @param String $column столбец для сортировки * @param String $order порядок сортировки * @return Array */ public function getTableData($tableName, $column, $order){ $rows = array(); if($this->columnExist($column, $tableName)){ $sort = 'ORDER BY `'.$column.'` '; if($order == 'asc'){ $sort .= 'ASC'; } else{ $sort .= 'DESC'; } } else{ $sort = ''; } $result = mysql_query('SELECT * FROM `'.$tableName.'`'.$sort, $this->connect); while($row = mysql_fetch_assoc($result)){ $rows[] = $row; } return $rows; } /** * Существует ли такой столбец * * @param String $columnName имя столбца * @param String $tableName название таблицы * @return bool */ public function columnExist($columnName, $tableName){ $columnName = mysql_escape_string($columnName); $result = mysql_query('SHOW COLUMNS FROM `'.$tableName.'` LIKE "'.$columnName.'"', $this->connect); return mysql_num_rows($result) == 1 ? true : false; } } ?> P.S. Долго писал ибо параллельно смотрел сериал Сверхъестественное и питалсо