Thread So eine Art: Data_Pageset. (2 answers)
Opened by Dennis at 2009-05-20 21:59

Gast Dennis
 2009-05-20 21:59
#121804 #121804
Hallo Leute,

mal wieder ein Problem.
Da ich bei meinem Webhosting Paket nix nach installieren kann,
ich aber so eine Art Data::Pageset brauche, versuche ich das irgendwie nach zu bauen.

Also, mein Test Programm funktioniert so wie es soll, von der Idee her aber es kommt wenn ich,
param(“set“) mit Adress- Eingaben manipuliere, ziemlich oft zu Fehlern bei der Datenbank abfrage.

Jetzt wollte ich Euch um Rat fragen ob ich mein Programm nicht irgendwie Intelligenter schreiben kann? So das vielleicht das Fehler abfangen oder eventuelle Eingaben besser gefiltert werden?


Mein Test Programm:
Code (perl): (dl )
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
#!/usr/bin/perl -T
use strict;
use warnings;
use CGI::Carp qw(fatalsToBrowser);
use CGI qw(param url);
use DBI;

my $cgi = CGI->new; print $cgi->header;
my $dbh = &db_open("test", "****", "****");
my $set = param("set"); $set =~ s/[^0-9]//g;
my $action = param("action"); $action =~ s/[^a-zA-Z0-9]//g;
my $sth_count = &db_abfrage($dbh, "SELECT answer_id FROM answer WHERE answer_post='on'");
my $count = $sth_count->rows; # Gezaehlte ID's aus der Datenbank (10 ID'S sind zum Test in der Datenbank)
my $max = "2"; # Ausgaben pro Seite
my $pageset = $count/$max+1;
my $test = "";

################################################# # Startup

if ($action eq "page") {

if ($set =="" or $set == m/^[0-9]/) {$set = 0;} # Fehler abfangen

for (my $i=1, my $j=0; $i<$pageset; $i++, $j = $j+$max) {
if($set == $j) {
$test .= "<strong>[$i]</strong>, ";
} else {
$test .= "<a href=\"?action=page;set=$j\">$i</a>, ";
}}

print "<br/><br/>\n$test<br/><br/>";

my $sth_answer = &db_abfrage($dbh, "SELECT * FROM answer WHERE answer_post='on' LIMIT $set, $max");
my $allref = $sth_answer->fetchall_arrayref ( {} );
foreach my $answer (@$allref) {
print $answer->{'answer_id'}." - ".$answer->{'answer_text'}."<br/>\n";
} $dbh->disconnect();
exit; } 

############################################################## # Exit

else { 
print "Fehler! <a href=\"?action=page\">Zurueck</a>"; # Fehler abfangen
exit; }
######### # Subroutinen######################
sub db_open {
my ($db, $user, $passwort) = @_;
my $dsn = "DBI:mysql:database=$db";
my $dbh = DBI->connect($dsn, $user, $passwort);
die ("No Database ...") if (!defined($dbh) or $dbh eq "");
return $dbh;
}
sub db_abfrage {
my $dbh = shift;
my $sql = shift;
my $sth = $dbh->prepare($sql) or die($dbh->errstr);
$sth->execute or die($sth->errstr);
return $sth;
}




Ich hoffe es kann mir jemand weiter Helfen?
LG, Dennis

View full thread So eine Art: Data_Pageset.