Aufgabe:Varianten sollen in übersichtlichen Tabellen nach Größe und Farbe dargestellt werden.
Bei unterschiedlicher Spalten- und Zeilenanzahl sollen diese dynamisch erstellt werden.
Lösung:vorausgesetzt die ben.def. Artikelfelder FARBE unf GROESSE sind "auch für Varianten" angelegt und diese Felder im WC befüllt.
<!--spmacro:module(vari)
sub table {
my $id = ssp::get_var_article('itemid', 0);
my $pre = ssp::db_get_prefix();
my $SITM = $pre . "SITM";
my $read;
if ($ssp::dbvend eq "MySQL") {
$read = ssp::readSQLData("SELECT DISTINCT FARBE FROM $SITM WHERE MITEMID = '$id' ORDER BY SID","FARBE");
} else {
$read = ssp::readSQLData("SELECT FARBE FROM $SITM WHERE MITEMID = '$id' GROUP BY FARBE ORDER BY MIN(SID)","FARBE");
}
my $out .= qq|<thead><tr><td>Größe/Preis</td>|;
for (my $i = 0; $i < $read; $i++) {
$farbe = ssp::get_var_db("FARBE", $i);
$out .= qq|<th>$farbe</th>|;
}
$out .= qq|</tr></thead>|;
my $sql2 = qq|SELECT DISTINCT GROESSE,PRICE FROM $SITM WHERE MITEMID = '$id'|;
my $read2 = ssp::readSQLData($sql2, "GROESSE","PREIS");
for (my $i = 0; $i < $read2; $i++) {
$gr = ssp::get_var_db("GROESSE", $i);
$preis = main::fp(ssp::get_var_db("PREIS", $i));
my $sql3 = qq|SELECT ITEMID FROM $SITM WHERE MITEMID = '$id' AND GROESSE = '$gr' ORDER BY SID|;
my $read3 = ssp::readSQLData($sql3, "VARIARTNR");
my @array;
for (my $j = 0; $j < $read3; $j++) {
$variart = ssp::get_var_db("VARIARTNR", $j);
$td = qq|<td><input name="a__$variart" value=0 size=4></td>|;
push(@array, $td);
}
$out .= qq|<tr><td>-<b>$gr</b>- $preis</td> @array </tr>\n|;
}
main::mprint ($out);
}
-->
Ausgabe mit
<table class="table-responsive table-bordered table-striped" style="width:100%;">
__vari::table__
</table>
Ergebnis:
Linkback: https://www.shoppilot.net/pf/index.php?topic=1719.0