foreach-Problem bei aufklappen und zuklappen über Session

travelsnake

Mitglied
Hallo Gemeinde,

ich sitze hier verzweifelt an einem Problem und meine spärlichen Kenntnisse helfen mit momentan nicht wirklich weiter. Hoffentlich könnt ihr mir helfen.

Ich habe eine Tabelle in der die Kunden verschiedene verschiedene Projekte, die wiederum verschiedene Aufgaben und die verschiedene Zeitstempel haben.

(Kunde1)
(Projekt 1)​
(Aufgabe 1)​
Zeitstempel 1​
Zeitstempel 2​
(Aufgabe 2)​
Zeitstempel 1​
Zeitstempel 2​

(Kunde 2)
usw.

Ob ein Punkt geöffnet ist oder nicht, wird über Sessions gesteuert und das funktioniert auch prima. Ich möchte allerdings auch einen Button haben, mit dem ich alle Projekte und Aufgaben eines Kunden auf-/zuklappen kann.

Dazu ist mein Lösungsansatz folgender:

$_SESSION
$_SESSION['open_stat']['Kunde_1']['expanded'] = true
$_SESSION['open_stat']['Kunde_1']['Projekt_1']['expanded'] = true
$_SESSION['open_stat']['Kunde_1']['Projekt_1']['Aufgabe_1']['expanded'] = true
usw.
PHP:
function fnc_find_cust($array, $cust, $open) {
  foreach($array[$cust] as $key1 => $value1) {
    foreach($value1 as $key2 => $value2) {
    }
  }
};

fnc_find_cust($_SESSION['open_stat'], "Kunde_1", true);

Hier möchte ich die Session bearbeiten und "expanded" auf true oder false setzen. Leider kriege ich bei der 2. foreach einen Fehler angezeigt
Warning: Invalid argument supplied for foreach()

Wo liegt meine Fehler?
Gibt es noch eine einfachere Möglichkeit?

Ich hoffe, dass ihr mit helfen könnt und vielen Dank schon einmal Vorab.

LG
 
Er hat keine freude an $value1

mach doch mal vor dem 2ten foreach die folgnede Ziele rein und schau was dabei rauskommt.
PHP:
print_r($value1);
 
Hi,
so wie du das ganze hier beschrieben hast kann diese Warnung eigentlich nicht erscheinen. Diese Warnung kommt soviel ich weiss nur wenn die array_expression der foreach loop kein array ist, was bei dir nicht der Fall ist.
Sicher das du den Array so wie oben beschrieben aufgebaut hast?

Bin mal gespannt was dir print_r ausgibt.

sollte so aussehen:

Code:
1

Array
(
    [expanded] => 1
    [Aufgabe_1] => Array
        (
            [expanded] => 1
        )

)
 
Zuletzt bearbeitet:
PHP:
print_r($value1);
ergibt:

Array (
[Aufgabe_1] => Array ([expanded] => 1)
[Aufgabe_2] => Array ([expanded] => 1)
[expanded] => 1
)

Kann da der Fehler bei "expanded" liegen? Ist ja schließlich kein Array :confused:
 
So, der Fehler hat wohl wirklich am expanded gelegen. Jedenfalls taucht bei der Lösung keine Fehlermeldung auf.

PHP:
function fnc_find_cust(&$array, $open) {
  foreach($array as $key1 => $value1) {
    if(is_array($value1)) {
      foreach($value1 as $key2 => $value2) {
        if(is_array($value2)) {
          foreach($value2 as $key3 => $value3) {
          }
        }
      }
    }
  }
}

Oder hat jemand eine bessere Idee?
 
Zurück