x-plosiv: Sessions mit Object auslesen

Hallo zusammen

Ich möchte in einem Webshop während dem Bestellvorgang prüfen ob ein bestimmter Artikel im Warenkorb liegt. Der Warenkorb liegt in einer Session.

Wenn ich mit:
echo nl2br(print_r($_SESSION,true));

Alle Sessions ausgeben lasse, erhalte ich folgendes:
Array
(
[cart] => shoppingCart Object
(
[contents] => Array
(
[330] => Array
(
[qty] => 1
)

[288] => Array
(
[qty] => 1
)

)

Nun möchte ich überprüfen ob der Artikel 330 (wie im Beispiel oben[330]) im Warenkorb vor kommt. Doch genau das bekomme ich nicht hin. Kann mir da vielleicht jemand weiterhelfen oder einen Tip geben.

Besten Dank im voraus. Ihr würde mir sehr helfen.

Gruss

Andy

  1. Liebe(r) x-plosiv,

    wie ist denn Dein Session-Array aufgebaut? Die Einrückungen, die print_r ausgibt wären hier extrem hilfreich!

    Array
    (
        [cart] => shoppingCart Object
        (
            [contents] => Array
            (
                [330] => Array
                (
                    [qty] => 1
                )

    [288] => Array
                (
                    [qty] => 1
                )

    )

    Da fehlt irgendwie mindestens eine schließende Klammer, kann das sein?

    Nun möchte ich überprüfen ob der Artikel 330 (wie im Beispiel oben[330]) im Warenkorb vor kommt.

    Dann beschäftige Dich mit array_key_exists, mit foreach und vielleicht noch mit isset.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
  2. Hi!

    Hallo zusammen

    Ich möchte in einem Webshop während dem Bestellvorgang prüfen ob ein bestimmter Artikel im Warenkorb liegt. Der Warenkorb liegt in einer Session.

    Wenn ich mit:
    echo nl2br(print_r($_SESSION,true));

    <pre> vor das print_r() stellen ist kürzer und erhält nicht nur die Zeilenumbrüche sondern auch die Einrückungen, womit man die Strukturierung noch besser sehen kann als nur mit Zeilenumbrüchen.

    Nun möchte ich überprüfen ob der Artikel 330 (wie im Beispiel oben[330]) im Warenkorb vor kommt. Doch genau das bekomme ich nicht hin. Kann mir da vielleicht jemand weiterhelfen oder einen Tip geben.

    $_SESSION ist ein Array, auf dessen Elemente greift man mit Array-Syntax zu. $_SESSION['cart'] ist ein Objekt, auf dessen Mitglieder man mit Objekt-Syntax zugreift. $_SESSION['cart']->contents ist dann wieder ein Array. Das Vorhandensein von Variablen und auch solchen Verkettungskonstrukten prüft man mit isset() und manchmal auch mit empty(), wenn man gleich noch den Inhalt auf PHPs Definition von "leer" prüfen will. Das ist eigentlich alles Grundlagenwissen. Woran scheitert es denn?

    Lo!

    1. Vielen Dank, habe den Fehler dank dir nun gefunden.

      Ich hatte die Abfrage so geschrieben:
      $_SESSION['cart']->shoppingCart['contents']['330']....
      statt so
      $_SESSION['cart']->contents['330']....