viele Fragen zu "0 Artikel in WK legen"

Begonnen von dobra, Dezember 08, 2006, 20:40:04

« vorheriges - nächstes »

0 Mitglieder und 1 Gast betrachten dieses Thema.

dobra

Bitte, bitte Hilfe
ich hab mich in totales Chaos verstrickt

Mein Vorhaben war, ein ssp-script zu basteln, das bei 0 Artikel in den WK legen ein Alert "Bitte geben Sie die Stückzahl ein" ausgeben sollte und bei korrekter Bestellung (Zahl in __anzkaufen__ eingetragen) den Artikel in den WK legt.
(so wie das bei Listboxen mit "erstes Element ist Pseudoelement" funktioniert)

Ich habe versucht, das auf
<!--spmacro:module(Callback)
# Es wird ein alert Fenster zur Bestätigung des "In den Warenkorb legen" angezeigt
sub js_placecart_insertion {
   my $js = qq[
alert('Der Artikel wird in den Warenkorb gelegt');
  ];
  return $js;
}
-->

aufzubauen.

Problem 1:  dieses Script funktioniert nur bei "normalen" Artikeln, nicht aber bei meinen Multiplacecart für Varianten
(mit <!--spmacro:module(vari) ausgegeben)
aber gerade dafür wolle ich es haben, da hier ja Menge "0" vorgegeben ist

Problem 2:  ich schaffe es nicht, da eine if-Funktion einzubauen
alle Versuche enden mit "Seite wird überhaupt nicht angezeigt" oder "wird zwar angezeigt, aber Warenkorbfunktion außer Betrieb"
ein von vielen vergeblichen Ansätzen war z.B.:
my $js = qq[
   status = (__anzkaufen__)
       if (status==0) {alert('blabla');  }
       ];
   return $js;


Gibt es vielleicht doch eine fertige Lösung (die ich notfalls nur ein bißchen anpassen muß)?
mfG
dobra

dobra

#1
Habe nochmal über eine Lösungsmöglichkeit nachgedacht.

Vermutlich muß ich die if - Funktion direkt in das Multiplacecart-Script einbauen.



Aber wie ???
Dazu fehlt mir einfach noch der Durchblick (Perl-Komandos und ShopPilot-Anweisungen)

Vielen Dank im Voraus für Tipps und/oder Lösungen
mfG
dobra

hop

Hallo Woll-Insel,

zunächst mal zur Erklärung was dieses js_placecart_insertion() ist.

Es gibt eine JavaScript Funktion inwk() die aufgerufen wird, wenn man einen normalen
Artikel per __id__ oder __anzkaufen__ in den WK legt.

DIese Funktion (inwk) kann man verändern, indem man mit js_placecart_insertion() ein
Stück Programmcode bereitstellt, welches eingefügt wird. Achtung es ist kein Perl sondern JavaScript Code
der hier bereitgestellt werden muss.

Bei Multiplacecart wir die Funktion inwk jedoch nicht verwendet. Da alles direkt über ein
Formular abgeschickt wird.
Eine Überprüfung müsste hier an der Funktion OnSubmit() im Form Tag ansetzen und
z.B eine Funktion ValidateForm() aufrufen.


<form method="post" action="__xformcart__" OnSubmit="return ValidateForm()">




<script type="text/javascript">
function ValidateForm () {
  for (i = 0; i < document.forms[0].elements.length; ++i)
   
    if (document.forms[0].elements[i].value != "0") {
        return true; /* ein aus gefülltes Feld gefunden  */
    }
   alert("Geben Sie bitte in den Feldern die gewünschte Anzahl ein!");
   return false;
}
</script>


Wenn diese Funktion false zurückgibt wird das Formular nicht abgeschickt.


Gruss hop



Sch?ne Gr??e hop

dobra

Danke für den Code, aber es funktioniert nicht
(s. http://www.woll-insel.at/cgi-bin/shop2/iboshop.cgi?show2840 - Quelltext)
Egal ob 0 Stück oder beliebige Zahl - kein Alert und immer Warenkorb

Habe testweise statt nicht 0 (!= "0") genau 0 (== "0") versucht - da wird das Alert immer angezeigt.

Irgendwie nimmt meine Seite nicht zur Kenntnis, daß "wenn - dann" und "wenn nicht - dann nicht" unterscheiden soll.

(das JS habe ich nur zum testen im Body dirkekt vor den Code geschrieben - kommt dann in externe JS-Datei)

was mache ich falsch?
mfG
dobra

hop

Zitat(s. http://www.woll-insel.at/cgi-bin/shop2/iboshop.cgi?show2840 - Quelltext)
Egal ob 0 Stück oder beliebige Zahl - kein Alert und immer Warenkorb

Da kommt nichts !? Vergessen die Datenbank neu anzulegen ?

Bei der Funktion könnte es eine Problem geben, weil sie davon ausgeht,
dass das 1. Formular der Seite forms[0] die Artikel enthält, besser wäre wohl.

<form method="post" action="__xformcart__" OnSubmit="return ValidateForm(this);">

<script type="text/javascript">
function ValidateForm (myform) {
  for (i = 0; i < myform.elements.length; ++i)
   
    if (myform.elements[i].value != "0") {
        return true; /* ein ausgefülltes Feld gefunden  */
    }
   alert("Geben Sie bitte in den Feldern die gewünschte Anzahl ein!");
   return false;
}
</script>


Ist allerdings nicht getestet und soll eher eine Lösungsidee als eine
fertige Lösung darstellen.

Gruss hop
Sch?ne Gr??e hop

dobra

Hallo hop

Vielen lieben Dank  - die "ungetestete" Version funktioniert auf Anhieb.

Ich fürchte, ich bin noch "Lichtjahre" davon entfernt, solche Skripte zu verstehen.
Trotz den wirklich guten Buch ist das, was Sie machen können für mich nur "Hauptbahnhof"......

Wünsche noch ein schönes Wochenende
mfG
dobra