проблема с множественными формами perl - PullRequest
0 голосов
/ 02 мая 2011

Привет, ребята!Моя первая разработка веб-приложения на Perl.У меня есть страница с 2 формами, каждая из которых отправляется на другие страницы.Проблема заключается в следующем: при отправке второй формы она переходит к действию первой формы.Параметры передаются через метод Get, а URL содержит строку ввода из обеих форм.Вот код.

#!C:\Perl\bin\perl

use DBI;
use DBD::mysql;
 print "content-type: text/html \n\n";
 print '<html>';
 print '<body>';
# DBI CONFIG VARIABLES
$host = "localhost";
$database = "t2";
$port = 3308;
$user = "";
$pw = "";


#DATA SOURCE NAME
$dsn = "dbi:mysql:$database:localhost:3306";

# PERL DBI CONNECT (RENAMED HANDLE)
$conn = DBI->connect($dsn, $user, $pw) or die "Unable to connect: $DBI::errstr\n";

$query = 'SELECT * From book';

$query_handle = $conn->prepare($query);

# EXECUTE THE QUERY
$query_handle->execute();

$query_handle->bind_columns(\$id, \$title ,\$author ,\$price, \$stock);

print '<table border="1">';
print '<thead>';
print '<tr>';
print '<td> Id </td>';
print '<td> title</td>';
print '<td> Author </td>';
print '<td> price</td>';
print '<td> Stock </td>';
print '<td> Buy </td>';

print '</tr>';
print '</thead>';

while($query_handle->fetch()) {



    print '<tr>';
    print '<td>';
    print $id;
    print '<td\>';
    print '<td>';
    print $title;
    print '<td\>';
    print '<td>';
    print $author;
    print '<td\>';
    print '<td>';
    print $price;
    print '<td\>';
    print '<td>';
    print $stock;
    print '<td\>';
    print '<td>';
    if ($stock ne '0') 
    {

        print '<form name="form1" action = "http://localhost/t3/buyBook.pl" method="get">';
        print '<input type="hidden" name="buy_id" value="'.$id.'"';
        print '<input type="submit"  name="buy"  value="Buy"';
        print '<form\>'
    }else
    {
        print '<input type="submit" name="buy" disabled="disabled" value="Buy"';
    }
    print '<td\>';
    print '<tr\>';

} 
print '</table>';

print '<form name="form2" action="http://localhost/t3/search_book.pl" method="get   ">';
print '<br/>';
print 'Search for book by:';
print '<br/>';
print '<input type="radio" name="searchBy" value="Title"> Title <br/>';
print '<input type="radio" name="searchBy" value="Author"> Author <br/>';
print '<input type="text" name="search_book" >';
print '<br/>';
print '<input type="submit" name="search" value="Search">';
print '</form>';

print '<body/>';
print '<html/>';

Вот URL-адрес, отображаемый при нажатии любой из двух кнопок отправки: http://localhost/tema3/buyBook.pl?buy_id=7505&buy_id=2&buy_id=12195&search_book=&search=Search

Есть идеи, как это исправить?Andrew

1 Ответ

1 голос
/ 02 мая 2011

Я думаю, что у нас проблема в том, что вы закрываете теги неправильно.Это заставляет сначала <form> «захватывать» все параметры ниже него.Попробуйте исправить следующим образом:

print '</form>'; ## this is correct closing tag for a form

</form> и <form\> - это не одно и то же.<form\> откроет новую форму вместо закрытия.На самом деле это ничего не даст, потому что вложенные формы недопустимы.

Вы также должны использовать теги </td> и </tr> в конце ячейки таблицы и строки.

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