Schrift
[thread]10477[/thread]

Abfrage nicht vollständig, benötige Hilfe



<< |< 1 2 >| >> 15 Einträge, 2 Seiten
Gast Gast
 2007-09-27 14:45
#100055 #100055
Hallo,

ich versuche aus einer Datenbank die Anzahl der neuen E-Mails im Postfach auszulesn und auszugeben. Das Problem ist, dass ich überhaupt nicht weiß, wie ich diese Ausgabe erhalten soll. Rufe ich die Ausgabe mit $sth auf, gibt er aus:

Sie haben DBI::st=HASH(0xa80a60) neue Mails in Ihrem Postfach.

Daraufhin habe ich versucht, statt $sth eine neue Variable $count zu definieren. Da zeigt er mir aber immer 0 an. Und genau dort liegt mein Problem. Wie kann ich die Variable vervollständigen (denn fertig isse nicht...):

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        my $dbh = DBI->connect("$db_name","$db_user","$db_pass") || die "Database connection not made: $DBI::errstr";
        my $sth = $dbh->prepare("SELECT * FROM pm_in WHERE pm_to = '$nick' AND new = '1' ORDER BY date DESC");  
        $sth->execute();

        my @entries=();
        my $count=0;
        while(@entries=$sth->fetchrow_array)
                        {
                        $count++;
                        }

        my $output = $main->createInfoOutput('newmails',{mails => $sth});   
        return [$output];

                        $sth->finish();
                        $dbh->disconnect();


Ich bedanke mich schonmal für eure Hilfe und freue mich auf eine Antwort.
renee
 2007-09-27 14:49
#100056 #100056
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
my $dbh = DBI->connect("$db_name","$db_user","$db_pass") || die "Database connection not made: $DBI::errstr";
my $sth = $dbh->prepare("SELECT * FROM pm_in WHERE pm_to = '$nick' AND new = '1' ORDER BY date DESC");    
$sth->execute();

my $count=0;
while(my @entries = $sth->fetchrow_array){
    print "Datensatz: @entries\n";
    $count++;
}

#my $output = $main->createInfoOutput('newmails',{mails => $sth});

$sth->finish();
$dbh->disconnect();
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2007-09-27 14:50
#100057 #100057
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bzw:
Code (perl): (dl )
my $output = $main->createInfoOutput('newmails',{mails => $cout});  
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Struppi
 2007-09-27 15:02
#100058 #100058
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Wenn es nur um die Anzahl geht, geht das auch ohne Schleife.

Code (perl): (dl )
1
2
3
4
$dbh->prepare("SELECT COUNT(1) FROM pm_in WHERE pm_to = '$nick' AND new = '1'");
$sth->execute();
my $count = $sth->fetchrow_array;
my $output = $main->createInfoOutput('newmails',{mails => $count[0]});


[EDIT]Natürlich in der Hoffnung, das $nick keine Eingabe von aussen ist. So oder so wäre es besser die abfrage so zu machen:
Code (perl): (dl )
1
2
$dbh->prepare("SELECT COUNT(1) FROM pm_in WHERE pm_to = ? AND new = '1'");
$sth->execute($nick);
renee
 2007-09-27 15:05
#100059 #100059
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
kleiner Fehler ist bei Dir drin...

entweder my @count = ... oder

Code (perl): (dl )
1
2
my  ($count) = $sth->fetchrow_array;
my $output = $main->createInfoOutput('newmails',{mails => $count});
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2007-09-27 15:08
#100060 #100060
Hi, danke soweit. Aber: Ausgabe ist immernoch "Sie haben 0 Emails" und jaaaaaa ich habe Mails :D

Habs nu so:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
my $dbh = DBI->connect("$db_name","$db_user","$db_pass") || die "Database connection not made: $DBI::errstr";
my $sth = $dbh->prepare("SELECT * FROM gtchat_pm_in WHERE pm_to = 'nick' AND new = '1' ORDER BY date DESC");    
$sth->execute();

my $count=0;
while(my @entries = $sth->fetchrow_array){
#print "Datensatz: @entries\n";
$count++;
}

my $output = $main->createInfoOutput('newmails',{mails => $count});   
return [$output];

$sth->finish();
$dbh->disconnect();

}
nepos
 2007-09-27 15:09
#100061 #100061
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ginge sogar noch etwas kürzer:
Code (perl): (dl )
1
2
my $count = $dbh->selectrow_array(q{SELECT COUNT(1) FROM gtchat_pm_in WHERE pm_to=? and new=1}, undef, $nick);
my $output = $main->createInfoOutput('newmails',{mails => $count});

selectrow_array() liefert für einen Select, der nur eine Spalte liefert im skalaren Kontext genau diesen einen Wert. Daneben ist bei diesem Aufruf auch $nick korrekt durch das DBI-Module escaped.
Gast Gast
 2007-09-27 15:14
#100062 #100062
Hi,

so gehts leider auch nicht:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
my $dbh = DBI->connect("$db_name","$db_user","$db_pass") || die "Database connection not made: $DBI::errstr";
my $sth = $dbh->prepare("SELECT * FROM gtchat_pm_in WHERE pm_to = '$nick' AND new = '1' ORDER BY date DESC");    
$sth->execute();

my $count = $dbh->selectrow_array(q{SELECT COUNT(1) FROM gtchat_pm_in WHERE pm_to=? and new=1}, undef, $nick);
my $output = $main->createInfoOutput('newmails',{mails => $count});


return [$output];

$sth->finish();
$dbh->disconnect();

}
renee
 2007-09-27 15:20
#100063 #100063
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Entweder:
Code (perl): (dl )
1
2
my ($count) = $dbh->selectrow_array(q{SELECT COUNT(1) FROM gtchat_pm_in WHERE pm_to=? and new=1}, undef, $nick);
my $output = $main->createInfoOutput('newmails',{mails => $count});


Oder
Code (perl): (dl )
1
2
my @count = $dbh->selectrow_array(q{SELECT COUNT(1) FROM gtchat_pm_in WHERE pm_to=? and new=1}, undef, $nick);
my $output = $main->createInfoOutput('newmails',{mails => $count[0]});


Edit: nepos' Beitrag übersehen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2007-09-27 15:24
#100064 #100064
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gast+2007-09-27 13:14:39--
Hi,

so gehts leider auch nicht:


Hier wäre gut zu wissen was nicht funktioniert, bzw. wie sich das äußert...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 15 Einträge, 2 Seiten



View all threads created 2007-09-27 14:45.