Как я могу отфильтровать записи из базы данных SQLite в моем скрипте Perl CGI? - PullRequest
0 голосов
/ 14 сентября 2010

Вот таблица, в которой я извлекаю данные из sqlite, в верхней части этой таблицы данных мне нужна кнопка фильтра и 2 текстовых поля.в качестве имени пользователя и имени пользователя должна появиться запись, содержащая идентификатор или имя ... Пожалуйста, помогите мне .. Я новичок в Perl ...

#!C:\perl\bin\perl.exe

use CGI;
use CGI qw/:standard/;
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
my $q = new CGI;
use DBI;
use CGI qw(:all);
use warnings;
print $q->header ( );
my $dbh = DBI->connect(
        "dbi:SQLite:DEVICE.db",
        "", "",
        {
            RaiseError => 1,
            AutoCommit => 1
        }
    );
 my @rows = ();
 my $sql = "SELECT UserId,UserName,CardNo,GroupId,Role,VerifyType FROM UsersList";
 my $sth = $dbh->prepare($sql) or die("\n\nPREPARE ERROR:\n\n$DBI::errstr");
  $sth->execute or die("\n\nQUERY ERROR:\n\n$DBI::errstr");
 print '<table>';
 print "<tr>";
 print "<th>$sth->{NAME}->[0]</th>";
 print "<th>$sth->{NAME}->[1]</th>";
 print "<th>$sth->{NAME}->[2]</th>";
 print "<th>$sth->{NAME}->[3]</th>";
 print "<th>$sth->{NAME}->[4]</th>";
 print "<th>$sth->{NAME}->[5]</th>";
 print "<th>  EDIT  </th>";
 print "<th>  DELETE  </th>";

 while (my @row = $sth->fetchrow_array) {
  print "
 <tr>
 <td>$row[0]</td>
<td>$row[1]</td>
<td>$row[2]</td>
 <td>$row[3]</td>
 <td>$row[4]</td>
  <td>$row[5]</td>
  <td><A HREF=\"\">EDIT</A></td>
  <td><A HREF=\"\">DELETE</A></td>
   </tr>";
   }
   print "<tr style='background-color:#CDC9C9;'><td><A HREF=\"http://localhost/cgi- 
     bin/AddUser.cgi\">ADD</A></td><td></td><td></td><td></td><td></td></tr>";
   print"</table>";
   $sth->finish();
     $dbh->commit();
  $dbh->disconnect;


 print <<END_HTML;
 <html>
 <head><title></title></head>
 <body>
  <form action="UsersList.cgi" method="get">
 <TABLE align="center">

  <TR>
  <TD align="left">
 <input type="hidden" name="submit" value="Submit">

</TD>
</TR>
  </TABLE>

  </form>
   </body></html>
    END_HTML

1 Ответ

1 голос
/ 14 сентября 2010

Вы можете отфильтровать записи, которые были возвращены, добавив предложение 'where' в ваш оператор SQL. Вы можете получить параметры, которые были введены в ваши текстовые поля, используя функцию 'param' из CGI.pm.

Вы говорите, что хотите отфильтровать результаты, поскольку текст вводится в текстовые поля. Это сложнее. Для этого вам понадобится Javascript и Ajax.

Вы, кажется, немного смущены CGI и Perl. Например, вы загружаете модуль CGI три раза, а затем используете только одну из его функций. Я настоятельно рекомендую вам прочитать что-то, что поможет вам понять основные концепции, прежде чем писать больше кода. CGI-курс Овидия - отличное введение.

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