Hi, ich bin neu hier und hoffe das ich im richtigen Forum bin.
Ich bin leider nicht sehr fit in Perl, muss aber als Hausarbeit für meine FH ein Perlskript schreiben, das eine Datenbank abfragt. Hier ist der Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/usr/bin/perl -wT
use strict;
use CGI qw/:standard/;
use DBI;
print header,
start_html('Database Interface'),
h1('<font color=blue>first test of a query! Just in a few DNA-Sequences:</font>'),hr,
start_form,
textarea( -name =>'input',
-default=>'Enter your sequence here...',
-rows=>'10',
-columns=>'50'),br,
'<font color=blue>Choose the table: </font>',
popup_menu( -name =>'table',
-values =>[qw/dnaseq protseq/],
-labels =>{'dnaseq'=>'DNA-Sequences','protseq'=>'Protein-Sequences'}),p,
submit('subm','submit'),p,
end_form,
hr;
my $popup_menu_value = param('table');
my $input;
my @result;
if( $popup_menu_value eq "dnaseq"){
$input = uc param('input'); #uc wandelt Klein- in Großbuchstaben um
}
else{
$input = lc param('input'); #lc wandelt Groß- in Kleinbuchstaben um
}
import_names('items');
if ($items::subm) {
my $table = param('table');
my $query = "select * from $table where seq like '%$input%';";
my $dbname = 'perl';
my $seqs = DBI->connect("dbi:Pg:dbname=$dbname",'marc','')
or die "Kann keine Verbindung herstellen: $DBI::errstr";
my $sql = $seqs->prepare($query)
or die "Kann die Abfrage nicht vorbereiten: $DBI::errstr";
$sql->execute();
print "Result is:",p;
print(" <table border=0 width=80%>
<colgroup>
<col width=50>
<col width=80>
</colgroup>
<th align=left>#</th>
<th align=left>Sequence</th>");
my $counter = 0;
while(@result = $sql->fetchrow_array() ){
$counter++;
print(" <tr> <td>",checkbox($counter),"</td>",
"<td> <A HREF='details.cgi?art=$result[ 1 ]'>$result[ 1 ]</A></td></tr>");
}
print("</table>");
print start_form,
submit('show','show'),p,
end_form,
hr;
}
elsif ($items::show) {
print ( ... );
}
Es geht um folgendes:
Man kann in das Textfeld eine Sequenz eingeben, dann kann man eine Datenbank aussuchen danach submit drücken.
Jetzt wird die Datenbank nach dem Eingegebenen String durchsucht und jede DNA-Sequenz die ihn enthält wird zurückgeliefert. Und zwar in einer Tabelle, in der ersten Spalte soll eine Fortlaufende Nummer stehen und eine Checkbox durch die ich eine oder mehrere Sequenzen(Ergebnisse) markieren kann. Dann will ich das unter der Tabelle wieder ein Submit-Button erscheint und wenn man auf diesen drückt, sollen Details zu jeder der durch die Checkboxen markierten Sequenzen angezeigt werden.
Da ich die Checkboxen aber in der while-Schleife erzeuge kann ich später nicht mehr darauf zugreifen.
Wie könnte ich das lösen???
Ich hoffe das ich alles verständlich erklärt habe.
Vielen Dank für eure Hilfe.