Autor Thema: Anzahl der Varianten auf Artikelseiten auslesen?  (Gelesen 5748 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline dobra

  • Global Moderator
  • Hero Member
  • *****
  • Beiträge: 1353
  • Lob: 18
Anzahl der Varianten auf Artikelseiten auslesen?
« am: Dezember 31, 2010, 10:32:03 »
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  :)

Linkback: https://www.shoppilot.net/pf/index.php?topic=1496.0
« Letzte Änderung: Dezember 31, 2010, 12:36:34 von dobra »
mfG
dobra


xx
Cross-Selling auf Artikelseiten?

Begonnen von evers

2 Antworten
5161 Aufrufe
Letzter Beitrag September 22, 2006, 12:46:38
von evers
xx
Static Builder und gelöschte Artikelseiten

Begonnen von emil

3 Antworten
6059 Aufrufe
Letzter Beitrag Dezember 31, 2002, 00:41:15
von hop
xx
verfügbare Anzahl bei GS

Begonnen von dobra

4 Antworten
6317 Aufrufe
Letzter Beitrag März 08, 2007, 05:28:13
von dobra
xx
FAQ Anzahl gefundene Artikel

Begonnen von sre

1 Antworten
5322 Aufrufe
Letzter Beitrag September 30, 2002, 22:43:27
von hop