Doppelte Hersteller

Begonnen von bytefender, Oktober 07, 2004, 13:14:51

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

bytefender

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.

admin

...
#1
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

dobra

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
mfG
dobra

ahe

Hallo dobra,

jetzt sollten wieder alle Scripte sichtbar sein.
MfG ahe

dobra

#4
Danke ahe,

Irgendwas fehlt mir aber???
Es funktioniert bei mir nicht  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
mfG
dobra

ahe

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.
MfG ahe

dobra

#6
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?
mfG
dobra

ahe

Schauen Sie mal in den Demoshop Styleshop.
Dort ist eine Herstellersuche (auch per Listbox) eingebaut.
MfG ahe

dobra

#8
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
mfG
dobra

ahe

Danke, wünsche ich Ihnen ebenfalls.
MfG ahe