Forum Webscript.Ru

Дизайн и Верстка => Всё о Html => Тема начата: Dema от 02 Мая 2003, 23:18:45

Название: вывод в виде таблицы
Отправлено: Dema от 02 Мая 2003, 23:18:45
есть некий скрипт в perle в котором имеется запрос к базе данных mysql как сделать так чтобы он в htmle выдавал в виде таблицы а то он выдает только в одну строку. :(
Название: вывод в виде таблицы
Отправлено: Nevermind от 03 Мая 2003, 06:44:26
1. Делаешь запрос к базе
2. Пишешь открывающий тэг таблицы
3. В цикле выводишь результаты запроса с тэгами
4. Пишешь закрывающий тэг таблицы

На PHP это будет примерно так:
$q=mysql_query("SELECT * FROM bla-bla");
echo("while($row=mysql_fetch_array($q)) {
echo("".$row[0]."");
};
echo("");
Название: вывод в виде таблицы
Отправлено: Mog. от 03 Мая 2003, 10:21:02
На перле выглядеть будет примерно так же, только вместо echo() используй print без скобок.
Название: вывод в виде таблицы
Отправлено: Dema от 03 Мая 2003, 23:26:28
Мой скрипт выглядит так:
#!/usr/bin/perl
use CGI;
print "Content-Type:text/html\\n\\n";
print "

test


\\n";
use dbi;
use Mysql;
$dbh = Mysql->connect($localhost, $ddd, $root);
$dbh->selectdb("ddd");
$sth = $dbh->query("select film from records");
@arr = $sth->FetchRow;
# $count = $#arr; # Figure out how many elements.
 $count = $#arr;
 print "" .$arr;
 print "
" .$count;
for ($i=0;$i<=$count;$i++) { # Print out the table names.
print "";
 # здесь надо сделать разбивку каждой строки на поля
 # и в цикле их выводить
 @columns = split (/~/,$arr);
 $num_of_columns =scalar(@columns);
  for ($j=0; $j<= $num_of_columns; $j++) {
  print "".$columns[$j]."";
 }

 print "";
 }

 print "\\n";

выдает только первую строку help me, please
Название: вывод в виде таблицы
Отправлено: Alone от 04 Мая 2003, 00:56:25
http://phpclub.unet.ru/tutor/mysql/perl_api.htm#FetchRow

print "" .$arr;
print "
" .$count;
зачем это? это не правильно с точки зрения HTML
Название: вывод в виде таблицы
Отправлено: Dema от 04 Мая 2003, 11:54:09
это так для себя писал. эти строчки можно не смотреть. без них тоже не работает.
Название: вывод в виде таблицы
Отправлено: Mog. от 05 Мая 2003, 08:40:47
Цитировать
Dema:
@arr = $sth->FetchRow;
и все что выше на твоей совести :)
а дальше можно:

# $count = @arr; # Figure out how many elements.
$count = @arr;
print "All elements - $count
";
print "";
for (@arr) { # Print out the table names.
print "";
# здесь надо сделать разбивку каждой строки на поля
# и в цикле их выводить
@columns = split /~/,$_; #очень может быть что и  /\\~/
$num_of_columns=1;
for (@column) {print ""}
print "";
}
print "
$num_of_columns$_
\\n";
Название: вывод в виде таблицы
Отправлено: Dema от 07 Мая 2003, 23:03:33
Mog спасибо за ответ но мне нужно не количество а сама строка к которой идет запрос да еще и в виде таблицы если знаешь подскажи пожалуйста.
Название: вывод в виде таблицы
Отправлено: Mog. от 08 Мая 2003, 15:39:57
Чесно гря я не знаток БД, поэтому
Цитировать
Mog.:
@arr = $sth->FetchRow;
и все что выше на твоей совести

Я не в курсе насколько правильно @arr = $sth->FetchRow;
Но если это  правильно то @arr содержит как минимум одну строку
$count = @arr; - собсно число строк вынутых из БД
Все остальное - разбиение строк по разделителю "~" и вывод их в виде таблицы.
Я не говорил, что то, что написано тобой работает неправильно.
Цитировать
Dema:
выдает только первую строку help
чета мне кажется что в @arr одна строка и грузиться
Название: вывод в виде таблицы
Отправлено: Croaker от 08 Мая 2003, 16:19:30

while(@arr = sth->fetchrow_array) {
 print "";
    foreach(@arr) {
       print "", $_, "";
    }
 print "";
}
Название: вывод в виде таблицы
Отправлено: Croaker от 08 Мая 2003, 16:21:42
[OFF]Только этот топик к html`у не относится[/OFF]
Название: вывод в виде таблицы
Отправлено: Mog. от 08 Мая 2003, 16:23:55
А вот и help
Цитировать
Croaker:
while(@arr = $sth->fetchrow_array)
Потому и была значитца тока первая строка
[off]Да уж, не html, эт верно[/off]
Название: вывод в виде таблицы
Отправлено: Croaker от 08 Мая 2003, 16:37:55
да нет. Хотя я никогда не видел $sth->fetchrow (ща специально посмотрел в perldoc - не нашел), не факт, что его нет. Скорее всего это альтернативная запись (как $sth->fetch для $sth->fetchrow_array).

Ошибка в том, что $sth->fetchrow_array() (ди а любой другой), возвращают массив, содержащий записи только одной строки. Соответсвенно тебе его надо в цикле пускать, а ты его только один раз делаешь. Потому и одна строка.
Название: вывод в виде таблицы
Отправлено: Dema от 09 Мая 2003, 12:13:35
народ спасибо большое за ответы все работает нормально но я чего собственно на этот топик  писал. как сделать так, чтобы html выдавал результат запроса не в одну строку а в виде таблицы.
Название: вывод в виде таблицы
Отправлено: Mog. от 09 Мая 2003, 20:07:40
Таки у тебя не получилось что ли !?
Название: вывод в виде таблицы
Отправлено: Dema от 09 Мая 2003, 23:31:30
таки не получилось. у меня выдает все в одну строчку либо в один столбец а как сделать чтобы оно выдавало в виде таблицы с рамочкой и всякими такимим красивостями не знаю. как сделать это все в htmle знаю с этим конечно проблем нету. а вот как сделать чтобы запрос сделанный в perle выдал в htmle красиво не знаю. подскажите пожалуйста.
Название: вывод в виде таблицы
Отправлено: Mog. от 12 Мая 2003, 16:00:09
Цитировать
Dema:
в виде таблицы с рамочкой
print "";   :)

Все, что ты print после print "Content-type: text/html\\n\\n"; уйдет в браузер. И восприниматься им будет как хтмл (как минимум). У тебя есть массив в котором каждый элемент - строка, которая в свою очередь - набор элементов. Разбирая этот массив в цикле, обрамляешь каждый элемент нужными тегами и печатаешь его (в том же цикле)
Пример
#!/usr/bin/perl
@arr=("a|s|d|f","z|x|c|v","q|w|e|r","p|o|i|u","l|k|j|h");
print "Content-type: text/html\\n\\n";
print "
";
foreach $x(@arr){
@arr_1=split /\\|/, $x;
print "";
foreach $y(@arr_1){
print "";
}
print "";
}
print
$y
;