Anzahl der Varianten auf Artikelseiten auslesen?

Begonnen von dobra, Dezember 31, 2010, 10:32:03

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Hallo,

Ich möchte auf bestimmten Seiten auf denen mehrere Artikel mit Varianten liegen gerne die Anzahl der Varianten statt der Artikelanzahl ausgeben.
(bei Detailseiten wo es nur einen Artikel gibt war das einfach aber auf Artikelseiten mit variabler Artikelanzahl schaffe ich es nicht...)

wie muss ich da das sub (in location.ipl) schreiben?
sub itemcount {
   my %pageinfo = ssp::getCurrentPageInfo();
   my $catid = $ssp::pgid;
   if ($catid <10 or $catid > 1200000000){
       return;
   }
   if (($pageinfo{pagetype} >= 11) && ($pageinfo{pagetype} <= 17)){
       return;
   }
   
   my %pages = ();
   
   ssp::getChildCategoriesRecursive ($catid, \%pages);
   
   my @keys = keys %pages;
   my $pre = ssp::db_get_prefix();
   my $TABLE = $pre . "ITEM";
   my $counter = scalar(@keys);
   my $sqlstring = qq |SELECT COUNT(*) FROM $TABLE WHERE |;
       
    $sqlstring .= qq| PGID IN (|. join(",", @keys) .qq|)|;
                   
   ssp::readSQLData($sqlstring, "COUNT");
   my $count = ssp::get_var_db("COUNT", 0);
   main::mprint qq|            
<span class="text_before_items">$text_before_count</span><span class="count">$count</span> <span class="text_count">$text_items</span><span class="text_after_count">$text_after_count</span>
   |;
   
}

gibt ja nur die Artikelanzahl
Habe - erfolglos - alle möglichen "intuitiven" Varianten versucht, aber dazu reichen meine SQL-Kenntnisse mal wieder nicht  :'(

mit
   my @keys = keys %pages;
   my $pre = ssp::db_get_prefix();
   my $TABLE = $pre . "ITEM";
   my $TABLE2 = $pre . "SITM";
   my $counter = scalar(@keys);
   my $sqlstring = qq |SELECT ITEMID FROM $TABLE WHERE |;
       
    $sqlstring .= qq| PGID IN (|. join(",", @keys) .qq|)|;
                   
   my $read = ssp::readSQLData($sqlstring, "ITEMID");
my $count2;
for (my $i = 0; $i < $read; $i++) {
my $test = ssp::get_var_db("ITEMID", $i);
my $sqlstring2 = qq |SELECT COUNT(*) FROM $TABLE2 WHERE MITEMID = '$test'|;
   ssp::readSQLData($sqlstring2, "COUNT");
$count2 .= ssp::get_var_db("COUNT", 0);
}

bekomme ich nur die Teilmengen
(9 10 4 9 5 6 5 7 3 7 5 8 Artikel)
ich komme nicht drauf, wie ich da jetzt sie SUMME der gefundenen Varianten ausgeben kann.

mit
SELECT SUM(COUNT(*)) FROM $TABLE2
kommt x mal wiederholt
[Fri Dec 31 10:24:58 2010] iboshop.cgi: DBD::ODBC::st execute failed: [MySQL][ODBC 3.51 Driver][mysqld-5.0.67-community-nt]Invalid use of group function (SQL-HY000)(DBD: st_execute/SQLExecute err=-1) at Ibodata.pm line 1969.

und
my $summe=0;
for (my $i = 0; $i < $read; $i++) {
my $test = ssp::get_var_db("ITEMID", $i);
my $sqlstring2 = qq |SELECT COUNT(*) FROM $TABLE2 WHERE MITEMID = '$test'|;
   ssp::readSQLData($sqlstring2, "COUNT");
$count2 .= ssp::get_var_db("COUNT", 0);
$summe=$summe+$i;
}

bringt falsche Zahlen


ERLEDIGT

falsch
$count2 .= ssp::get_var_db("COUNT", 0);
richtig
$count2 += ssp::get_var_db("COUNT", 0);
bringt das korrekte Ergebnis  :)
mfG
dobra