Shopsystem ShopPilot Shoploesung Diskussionen und Infos zum Shopsystem ShopPilot
Willkommen Gast. Bitte einloggen oder registrieren.
Februar 08, 2012, 01:34:33

Einloggen mit Benutzername, Passwort und Sitzungslänge
Suche:     Erweiterte Suche
5208 Beiträge in 1408 Themen von 330 Mitglieder
Neuestes Mitglied: spraytool
* Übersicht Hilfe Login Registrieren
+  Diskussionen und Infos zum Shopsystem ShopPilot
|-+  ShopPilot
| |-+  SSP - Shop Server Pages
| | |-+  Ajax Fragen (Moderator: dobra)
| | | |-+  cart-Einträge mit Bedingung global löschen?
0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: cart-Einträge mit Bedingung global löschen?  (Gelesen 1453 mal)
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1167


WWW
« am: November 26, 2009, 17:06:12 »

Hallo,

mit  ssp::cart_write_var('xyz', $irgendwas);  kann ich Cart-Einträge anlegen,
mit  ssp::cart_write_var('xyz', "");   kann ich den Wert löschen
gibt es auch eine Anweisung, cart-Einträge abzufragen und global zu löschen (oder auf "" zu setzen)?

konkret: ich habe eine variable Anzahl (ca 15 - 30 Einträge) die alle mit "name_" beginnen.

ich möchte also gerne sowas machen
if (Carteintrag(?) =~ /name_/) { löschen - oder auf "" setzen }

geht das, oder muss ich da wirklich die maximal mögliche Anzahl einzeln schreiben
ssp::cart_write_var('name_...', "");
...
...
~30x
Gespeichert

ahe
Global Moderator
Sr. Member
*****

Lob: 19
Offline Offline

Beiträge: 399


« Antwort #1 am: November 27, 2009, 08:59:20 »

Hallo dobra,

erinnern Sie sich noch an das serialize-Modul?
Das ist für Ihren Anwendungsfall wahrscheinlich mal wieder genau das richtige Wink
Damit hätten Sie die 10-15 verschiedenen Einstellungen nur in einer einzigen cart-Zeile,
die Sie dann mit einem einzigen Befehl löschen können.
Gespeichert

MfG ahe
dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1167


WWW
« Antwort #2 am: November 27, 2009, 09:10:07 »

Hallo ahe,

da das doch ein sehr spezielles Thema ist - Antwort per mail
Gespeichert

dobra
Global Moderator
Hero Member
*****

Lob: 18
Offline Offline

Beiträge: 1167


WWW
« Antwort #3 am: November 27, 2009, 22:31:47 »

Hallo ahe,

Erfolgsmeldung  Wink

also mit
Code:
my $olddata = ssp::cart_read_var('ajax_serialize');
if (length($olddata) && ($olddata ne $ssp::undefined)) {
$SETTINGS = serialize::unserialize($olddata);
}
hab ich's nicht hingekriegt  Sad
Wenn ich mir zum testen $SETTINGS mit main::mprint ausgegeben habe, ist sowas (mit wechselndem Code in der Klammer) rausgekommen
HASH(0x1ef82dc)
und damit nix gespeichert sondern alle Werte gelöscht worden

aber mit Ihrem Hinweis hab ich dann nach "Schleifen mit Hashes" gesucht und die Lösung gefunden;

<!--spmacro:module(ajaxconfig)                    
push(@INC,'ajax');
require "JSON.pm";

use serialize;
my %SETTINGS = ();

    my $datastr = ssp::cart_read_var('ajax_serialize');
    my $tmp = serialize::unserialize($datastr);  
    %daten = %$tmp;

print "Content-Type: text/plain;charset=ISO-8859-1\n\n";
#use utf8;
my $pCall = JSON::jsonToObj($main::input);
my %result;
$result{_call} = $pCall;

if ($pCall->{method} eq 'ajaxconfig1') {
...
...
if ($pCall->{method} eq 'ajaxconfig2') {


      my $olddata = ssp::cart_read_var('ajax_serialize');
      if (length($olddata) && ($olddata ne $ssp::undefined)) {
      my $tmp2 = serialize::unserialize($olddata);  
      %daten2 = %$tmp2;
         my $x;
         my $y;
         while (($x, $y) = each(%daten2)) {
           $SETTINGS{$x} = $y;
         }
      }
   

my $artikel = $daten{artikel};
   ...
   ...
   div Daten auslesen, db-Abfragen, Bedingungen
   my $w_schritt = $pCall->{params}[2];
   ...
   if ($w_schritt == "1 bis x") {
   ...
   }
   usw, etc,
   bis  Zeile 641
   
ssp::cart_write_var('ajax_serialize', serialize::serialize(\%SETTINGS));
}   
   
print JSON::objToJson(\%result);
exit 0;

   
(hat etwas länger gedauert, aber jetzt funktioniert's  Grin)
und jetzt kann ich auch mit
Code:
<!--spmacro:module(ajaxvari)
sub loeschen {
  ssp::cart_write_var('ajax_serialize', "");
  }
-->
alle Werte (egal wieviele gerade im Carteintrag stehen) bequem löschen.

Danke nochmal
Gespeichert

Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  

mysitelist Impressum Powered by SMF 1.1.16 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS