Shopsystem ShopPilot

ShopPilot => SSP - Shop Server Pages => Thema gestartet von: bytefender am Oktober 07, 2004, 13:14:51

Titel: Doppelte Hersteller
Beitrag von: bytefender am Oktober 07, 2004, 13:14:51
Um ein Select zu befüllen habe Ich ein Script geschrieben (Danke für die Mithilfe von Markus), um aus der Datenbank die Optionsfelder automatisch zu befüllen. Gleichzeitig werden mit $t1 und $t die Duplikate abgefangen. Das Feld 'HERSTNAME' ist ein benutzerdefiniertes Feld vom Typ TEXT.

   <!--spmacro:module(herst)
   sub h
   {
      my $t;
      my $text;
      my $t1;
      my $i=1;
      while ($i <= 211)
      {         
         $t =ssp::get_var_article('HERSTNAME',$i);
         if ($t ne $t1)
         {
            $text = qq{<option value="$t">$t</option>};
            main::mprint($text);
            $t1 = $t;
            $i++;
            
         }
         else
         {
            $i++;
            $t1 = $t;
         }
         
      }
      main::mprint($text1);
   }
   -->
Die Options Tags werden dann mit __herst::h__ in das Dokument weggeschrieben.
Es funktioniert auch mit dem einlesen, jedoch werden sporadisch die Hersteller doppelt angezeigt und das letzte Optionsfeld ist immer undefined.

Habe ich hier etwas vergessen?

Sorry aber C liegt bei mir schon ein paar Tage zurück und mit Perl fange ich jetzt erst an.

MFG
Fehlt hier noch was.
Titel: ...
Beitrag von: admin am November 09, 2004, 23:53:54
Hallo,

also hier eine noch bessere Lösung (die auch die Duplikate abfängt und die korrekte Anzahl berücksichtigt)

Anwendung: In einem Feld (hier ergaenz1) ist der Hersteller verzeichnet. Im shop Soll auf der Artikelseite eine Auswahloption angeboten werden, wozu eine Liste (<select><option></option></select>) der Auswahlmöglichkeiten zu generieren ist. Diese wird dann als Suchfeld verwendet und man erhält so eine z.B. nach Hersteller gefilterte Liste. Hier geht es um die Generierung der Select-Box.


<!--spmacro:module(herst)
sub h {
  my $anz = $_[1];
  my $t;
  my $i=0;
  my %TEST =();
  main::mprint("<select name=hersteller>");
  while ($i <= $anz)
  {
    $t =ssp::get_var_article('ergaenz1',$i);
    if (!defined ($TEST{$t})) {
       $text = qq{<option value="$t">$t</option>\n};
       main::mprint($text);
       $TEST{$t} =1;
     }
     ++$i;
  }
  main::mprint("</select>");
}
-->




Gruss hop
Titel: Re: Doppelte Hersteller
Beitrag von: dobra am Februar 11, 2007, 12:18:17
Hallo - genau so ein Script suche ich.........

Den Code von hop habe ich mir aus dem Quelltext geholt, aber ohne das "Optionsfelder befüllen" - Skript kann ich nichts damit anfangen.

Wäre suppernett, wenn Sie mir das verraten würden.

Vielen Dank im Voraus
dobra
Titel: Re: Doppelte Hersteller
Beitrag von: ahe am Februar 11, 2007, 13:10:50
Hallo dobra,

jetzt sollten wieder alle Scripte sichtbar sein.
Titel: Re: Doppelte Hersteller
Beitrag von: dobra am Februar 11, 2007, 13:40:27
Danke ahe,

Irgendwas fehlt mir aber???
Es funktioniert bei mir nicht  http://www.woll-insel.at/cgi-bin/shop2/iboshop.cgi?show1200004230 (http://www.woll-insel.at/cgi-bin/shop2/iboshop.cgi?show1200004230)

<!--spmacro:module(marke)
sub listmarke {
  my $anz = $_[1];
  my $t;
  my $i=0;
  my %TEST =();
  main::mprint("<select name=Marke>");
  while ($i <= $anz)
  {
    $t =ssp::get_var_article('MARKE',$i);
    if (!defined ($TEST{$t})) {
       $text = qq{<option value="$t">$t</option>\n};
       main::mprint($text);
       $TEST{$t} =1;
     }
     ++$i;
  }
  main::mprint("</select>");
}

sub marke {

my $count = ssp::readSQLData("SELECT MARKE FROM PY2_ITEM","MARKE");
if ($count >= 0) {
my $i=0;
while ($count > $i) {
$marke = ssp::get_var_db("MARKE",$i);
main::mprint(" $marke<br>\n");
++$i;
}
} else {
my $errtext = ssp::get_last_sqlerr();
main::mprint("Fehler beim DB Zugriff: $errtext<br>\n");
}
}
-->


ich kann zwar mit __marke::marke__ die DB nach benutzerdef. Feld "MARKE" abfragen aber ich bringe es nicht in die Listbox

habe versucht, das Skript anzupassen:  $t =ssp::get_var_article('ergaenz1',$i);
  -  die Marke steht bei mir in ben. def. Feld MARKE - $t = ssp::get_var_article("MARKE",$i);
was bedeutet z.B. die Zeile  my %TEST =();
muß ich nicht %TEST irgendwie definieren?

mal wieder ratlos
Titel: Re: Doppelte Hersteller
Beitrag von: ahe am Februar 11, 2007, 14:28:54
Die Funktion listmarke liest die Marken der Artikel auf einer einzelnen Artikelseite aus (zu sehen an: my $anz = $_[1]; und get_var_article).
Nicht shopweit wie Ihre Funktion marke.
Legen Sie also auf Ihrer Testseite mal einige Artikelverknüpfungen an.
Dann sollten die Hersteller dieser Verknüpfungen in der Listbox ausgegeben werden.
Titel: Re: Doppelte Hersteller
Beitrag von: dobra am Februar 11, 2007, 14:37:52
alles klar - Danke - so funktioniert's
war wieder ein grober Gedankenfehler von mir

ich hatte da eigentlich eine andere Idee, die ich dann wieder mal nicht so umsetzen kann, wie ich mir das ausgedacht hatte.......

.........oder vielleicht doch?
ZitatDiese wird dann als Suchfeld verwendet
wie kann ich das machen?
Titel: Re: Doppelte Hersteller
Beitrag von: ahe am Februar 11, 2007, 14:50:53
Schauen Sie mal in den Demoshop Styleshop.
Dort ist eine Herstellersuche (auch per Listbox) eingebaut.
Titel: Re: Doppelte Hersteller
Beitrag von: dobra am Februar 11, 2007, 15:07:10
(http://www.woll-insel.at/Bilder/smiley/Daumen_hoch.gif) DANKE

ich denke, damit kann ich etwas anfangen (= meine Idee doch realisieren)
mal sehen ob's was wird........

Sie haben mir jedenfalls sehr geholfen
wünsche noch ein ganz besonders schönes Restwochenende

dobra
Titel: Re: Doppelte Hersteller
Beitrag von: ahe am Februar 11, 2007, 17:13:36
Danke, wünsche ich Ihnen ebenfalls.