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

-2

Вот таблица, в которой я получаю данные из sqlite, вверху этому datagrid мне нужна кнопка фильтра и 2 текстовых поля. 1 для userId и 1 для userName... Все, что мне нужно, это ввести имя пользователя и имя пользователя в запись ограниченный идентификатором или именем, должен появиться... Пожалуйста, помогите мне.. новичок в 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
    Части SQLite и CGI не влияют друг на друга. Вы бы сделали это так же, даже если вы не используете CGI.
Теги:

1 ответ

1
Лучший ответ

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

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

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

  • 0
    Большое спасибо Mr.Davorg, я пройду курс cgi Овидия и вернусь, если у меня возникнут какие-либо проблемы дальше ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню