Arrays als Session?!

Blaubmania

Erfahrenes Mitglied
Hiho,
ich möchte ein Array in einer Session registrieren ich dachte eigentlich das das easy ist aber irgendwie bin ich mal wieder zu dumm dafür. Ich habe folgenden Code

PHP:
$suche = "Select * FROM phpbb_user_group WHERE user_id = '".$_SESSION['userid']."'";
  $abfrage = mysql_query($suche) or die(mysql_error());
  while($ergebnis = mysql_fetch_array($abfrage))
  {
   $_SESSION[$groupid]=array($ergebnis['group_id']);
  }

Abrufen des arrays dachte ich eigentlich das es so geht

PHP:
 $zahl = 0;
 while($_SESSION[$groupid[$zahl]])
 {
  if($_SESSION[$groupid[$zahl]]==43)
  {
   echo '<div align="center">blablubb</div>';
  }
  elseif($_SESSION[$groupid[$zahl]]==44)
  {
   echo '<div align="center">blubbbla</div>';
  }
$zahl++
}

aber leider endet dies in einer Endlosschleife
So richtig weis ich ned weiter danke für jede Hilfe.
 
ich hab dir hier ne kleine funktion. mit der kannst du auch array in die session einfügen.

Bei mir hat es jedenfalls immer geklappt..

PHP:
function add_to_Session($bezeichnung,$wert){
	$_SESSION[$bezeichnung] = $wert;
}

du übergibts in $bezeichnung, wie du es benennen willst und dem $wert das, was drin stehen soll.

Damit kannst du auch ganze arrays in die session schreiben..
 
Wie ist denn dein Array $groupid belegt? Stehen darin die Namen der Sessionvariablen, die du abfragen möchtest?
 
schreib mal bitte vor deinem "$zahl = 0" ...

PHP:
echo "<pre>";
print_r($_SESSION);
echo "</pre>";

und poste das Ergebnis ... und vielleicht wie du $groupid initialisierst
 
Also vlt. gibts ja auch andere Möglichkeit es geht darum das ein User in mehreren Gruppen sein kann. Jede Gruppe hat eine ID bzw. Nummer diese Nummern möchte ich in einem Array speichern zu der dazugehörigen Session.
D.h.

PHP:
$_SESSION[$groupid]=array($ergebnis['group_id']);

In $ergebnis['group_id'] steht die group id diese soll dann halt in $_SESSION[$groupid] abgespeichert werden wobei $_SESSION[$groupid] ein array sein soll.

Später möchte ich dann das Array durchlaufen bis keine Zahl mehr drinnen steht.
Dachte das geht so:

PHP:
while($_SESSION[$groupid[$zahl]])

Also der Quelltext von vorhin beinhaltet alles was ich geschrieben habe es steht nichts davor oder danach was die Variablen weiter beeinflussen könnte also wegen der Frage der Belegung oder Initialisierung.

Wenn ich folgendes schreibe:
PHP:
echo $_SESSION[$groupid[0]] 
echo $_SESSION[$groupid[1]]

Dann krieg ich "Array" als Wert ausgegeben
 
so wie du das jetzt hier beschreibst, heisst das, dass die session also so heisst:

PHP:
$_SESSION["2"][array(1,2,3,4,5,6,7)]

oder?

wenn ja, würde ich es so machen. Du hast ja den user, der sich eingeloggt hat. der ist in mehreren gruppen drin.

also würde es meiner ansicht nach besser so aussehen:
PHP:
$_SESSION["gruppen_ids"][array(1,2,3,4,5)]

dies kannst du mit meiner kleinen funktion ohne problem machen..
 
Dann geh doch mal Schritt für Schritt vor, was dein Code macht..
-$groupid ist nicht gesetzt, also 0.
-Du weist $_SESSION[0] immer wieder ein Array zu:
PHP:
while($ergebnis = mysql_fetch_array($abfrage))
{
   $_SESSION[$groupid]=array($ergebnis['group_id']);
}
-Du fragst den Status von $_SESSION[0] ab:
PHP:
while($_SESSION[$groupid[$zahl]])
-Weiterhin fragst du den gleichen Wert ab, denn $groupid[$zahl] hat unabhängig von $zahl immer den gleichen Wert, denn es ist nicht gesetzt..
 
Aha naja weil ich hatte das vorher so versucht $_SESSION[$groupid[]] aber das wollte er nicht machen arbeite noch end soviel mit Session ich dachte weil man ja Variablen registrieren kann geht das mit nem Array genauso und ein Array schreibt man ja $Array[]. Also in meinem Fall dachte ich das jetzt $groupid mein Arrayname ist und $zahl der Index also das in $groupid[0] z.B. die Gruppennummer 43 steht und in $groupid[1] die Zahl 44. Aber dem scheint nicht so :/ Wie komm ich jetzt ran an die abgespeicherten Werte? Oder wie kann ich es besser lösen bzw. anders?
 
das kannst du schon, aber der array selbst braucht einen namen, damit du ihn in der session direkt ansprechen kannst...

dann kanst du das mit der while schreife auch machen..
 
Also das heisst das hier

$_SESSION[$groupid]=array($ergebnis['group_id']);

was falsch ist. dann sollte ich mir nochmal die array funktion genauer ansehen ich dachte das die dem teil sagt hey $groupid ist ein array und speichert gleichzeitig die werte. also das $groupid ozusagen mein Arrayname ist.
 
Zurück