Представление результатов запроса в виде абзацев

Задача
Вы хотите представить результат запроса в виде простого текста.

Решение
Используйте для его отображения только теги абзаца HTML.

Обсуждение
Абзацы используются для вывода простого текста, не имеющего определенной структуры. В этом случае все, что вам нужно, – это извлечь отображаемый текст, конвертировать специальные символы в соответствующие HTML-конструкции и ограничить каждый абзац тегами

и

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

mysql> SELECT NOW(), VERSION(), USER(), DATABASE();

+-----------------------+-----------------+-----------------+----------------+
| NOW() | VERSION() | USER() | DATABASE() |
+-----------------------+-----------------+-----------------+----------------+
| 2002-05-18 11:33:12 | 4.0.2-alpha-log | paul@localhost | cookbook |
+-----------------------+-----------------+-----------------+----------------+

Для Perl в модуле CGI.pm имеется функция p(), заключающая в теги абзаца передаваемую ей строку.


Функция p() не занимается HTML-кодированием своего аргумента, поэтому вы должны сделать это самостоятельно, вызвав функцию escapeHTML():

($now, $version, $user, $db) =
$dbh->selectrow_array ("SELECT NOW(), VERSION(), USER(), DATABASE()");
$db = "NONE" unless defined ($db);
$para = < Local time on the MySQL server is $now.
The server version is $version.
The current user is $user.
The current database is $db.
EOF
print p (escapeHTML ($para));

В PHP можно вывести теги

и

в начале и конце перекодированного текста абзаца:

$query = "SELECT NOW(), VERSION(), USER(), DATABASE()";
$result_id = mysql_query ($query, $conn_id);
if ($result_id)
{
list ($now, $version, $user, $db) = mysql_fetch_row ($result_id);
mysql_free_result ($result_id);
if (!isset ($db))
$db = "NONE";
$para = "Local time on the MySQL server is $now."
. " The server version is $version."
. " The current user is $user."
. " The current database is $db.";
print ("

" . htmlspecialchars ($para) . "

\n");
}

Или можно после получения результата запроса начать вывод абзаца в режиме HTML, переключаясь затем между режимами:


Local time on the MySQL server is
.
The server version is
.
The current user is
.
The current database is
.



Чтобы вывести абзац в Python, сделайте так:

cursor = conn.cursor ()
cursor.execute ("SELECT NOW(), VERSION(), USER(), DATABASE()")
row = cursor.fetchone ()
if row is not None:
if row[3] is None: # проверить имя БД
row[3] = "NONE"
para = ("Local time on the MySQL server is %s." +
" The server version is %s." +
" The current user is %s." +
" The current database is %s.") % (row)
print "

" + cgi.escape (para, 1) + "

"
cursor.close ()
В JSP эту задачу можно решить так:
SELECT NOW(), VERSION(), USER(), DATABASE()





Local time on the server is .
The server version is .
The current user is .
The current database is .



Сценарий JSP использует rowsByIndex, так что столбцы результирующего множества доступны по индексу..



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела MySQL на эту тему:
Извлечение изображений и других двоичных данных
Использование результатов запроса для загрузки файлов
Представление результатов запроса в виде гиперссылок
Представление результатов запроса в виде списков
Представление результатов запроса в виде таблиц