Как я могу изменить атрибут rowspan в моей программе CGI? - PullRequest
2 голосов
/ 15 февраля 2010

Я пишу CGI-скрипт, который будет обрабатывать данные формы, и он должен напечатать имя ввода вместе с его значением в таблице. Когда у меня есть одно или несколько значений с одинаковым именем, имя должно охватывать строки, чтобы вместить все значения, которые соответствуют этому имени. Например, если у меня есть имя «color» со значениями «red», «green», «blue», то цвет должен занимать 3 строки в моей таблице. Мой вопрос, как бы я изменил атрибут rowspan в моем скрипте, чтобы приспособить это:

#!/usr/bin/perl --
use strict;
use CGI;

print <<HTTP;
Status: 200 OK
Content-Type: text/html

HTTP

print <<HTML; 
<html>
    <head>
        <title>Parameters<title>
    <head>

    <body>
     <table border="1" cellpadding="5" cellspacing="1">
     <tr>

     <th>Name</th>
     <th>Value</th>

     </tr>

HTML

 my $query = new CGI;

 my($name, $value);

 foreach $name ( $query->param)
 {
    print "<tr>";
    print "<td>$name</td>";

    foreach $value($query->param($name))
    {
        print "<td>$value</td>";
        print "</tr>";
    }



}

1 Ответ

0 голосов
/ 15 февраля 2010

Попробуйте это:

my $query = new CGI;
my($name, $value);

foreach $name ($query->param) {
    my @values = $query->param($name);
    my $count  = @values;

    print "<tr>";
    print "<td rowspan='$count'>$name</td>";
    print "<td>".shift(@values)."</td>";
    print "</tr>";    

    foreach $value (@values) {   
        print "<tr>";
        print "<td>$value</td>";
        print "</tr>";
    }
}

Кстати, я бы посоветовал вам рассмотреть возможность использования некоторой системы обработки шаблонов, например Template Toolkit .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...