URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6415
[ Назад ]

Исходное сообщение
"perl вывод в таблицу"

Отправлено Happy_demon , 26-Апр-07 12:11 
доброе время! пытаюсь подключиться к мускулу из перла и сделать красивый вывод
<html>
<FORM action="http://192.168.25.2/cgi-bin/7.cgi" method="get">
<select size="1" name="Name">
  <option value="129266782">Test</option>
  <option value="291411818">Test1</option>
  <option value="7066480">Test2</option>
  <option value="126710395">Test3</option>
</select>
<INPUT type="submit" value="Запрос">
</FORM>
</html>
пока все работает
[root@bc /usr/local/www/cgi-bin]# cat 7.cgi
#!/usr/bin/perl -wT
use strict;
use CGI ':standard';
use DBI;
print "Content-type: text/plain\n\n";
my $vybor=param('Name');
my @rows;
my $dbh = DBI->connect("DBI:mysql:database=aimsniff;host=127.0.0.1",
                    "sniff", "пароль") || die print "Can't connect";
my $query = "SELECT * FROM logs WHERE handle=$vybor OR fromHandle=$vybor ";
my $sth = $dbh->prepare($query) or die "error prepere $query:" . $dbh->errstr . "\n";
my $n = $sth->execute() or die "no execute $query:" . $dbh->errstr . "\n";
while (@rows = $sth ->fetchrow_array)
{
my $i;
for $i (0..($sth ->{NUM_OF_FIELDS}-1))
{
print "|" . $rows[$i] . "|";
};
print "\n";
};
$sth ->finish;
$dbh->disconnect();
в общем пример избитый. пока говорю Content-type: text/plain -  все нормуль, а как пытаюсь вывести Content-type: text/html и оформить в виде красивой таблички - сразу - нах. пусть без цвета, пусть без переноса длиных строк, выводится постоянно какая-то гадость. сама рамка рисуется, но данные как-то неправильно заносятся. если у кого есть рабочий пример именно таблички или ссылки- буду признателен

Содержание

Сообщения в этом обсуждении
"perl вывод в таблицу"
Отправлено andy , 26-Апр-07 13:18 
Может, не так понял.... Вот это -

print "|" . $rows[$i] . "|";

подразумевает вывод псевдографикой? Тогда нечто типа

print '<pre>';
while (@cols = $sth->fetchrow_array) {
  print "| ". join(" | ", @cols) ." |\n";
}
print '</pre>';

но надо же еще следить за шириной колонок. Проблема с text/html в том, что в этом случае два или более пробельных символа сжимаются в один пробел. Специально для таких ситуаций и придуман тег <pre>, он сохраняет все пробельные символы.

А вообще, не проще ли это сделать нормальной хтмл`ной табличкой?

print '<html><body><table border="1">';
while (@cols = $sth->fetchrow_array) {
  print "<tr><td>". join("</td><td>", @cols) ."</td></tr>\n";
}
print '</table></body></html>';


"perl вывод в таблицу"
Отправлено Happy_demon , 26-Апр-07 14:08 
>А вообще, не проще ли это сделать нормальной хтмл`ной табличкой?
>
>print '<html><body><table border="1">';
>while (@cols = $sth->fetchrow_array) {
>  print "<tr><td>". join("</td><td>", @cols) ."</td></tr>\n";
>}
>print '</table></body></html>';
Спасибо, проще. именно это и сделал. пойду до ума доводить (кодировка, пустые ячейки некрасиво оформляются, выделение жирным чисел в последней колонке и прочая, что еще придет в голову). еще раз огромное спасибо