Antworten auf deine Fragen:
Neues Thema erstellen

Array in Session wird nicht gespeichert

P

p_dieter

Guest

Hallo

versuche gerade ein Array in einer $_SESSION zu speichern, doch bleiben mir die alten Daten nicht erhalten.

Hier mein Code

Das ist die PHP-Datei die Aufgerufen wird
PHP:
<?php
session_start();
//error_reporting(E_ALL);
include "function.php";
$_SESSION["save"]=array();

if(isset($_GET[action])){
    if($_GET[action]==1){
        setPerson($_POST["vorname"],$_POST["nachname"]);
        echo include "formular_1.html";
    }
    if($_GET[action]==2){
    session_unset();
    header('location:anmeldung.php');
    }
    if($_GET[action]==3){

    }
    if($_GET[action]==4){
    
    }
}
else {
    echo include "formular_1.html";
}

echo session_id();
echo $_SESSION["save"]["teilnehmer3"][0];
?>
<pre>
 <?php print_r($_SESSION) ?>
</pre>
Die Function
PHP:
<?php
function setPerson($vorname,$nachname) {
    if (!isset($_SESSION["counter"])){
        $_SESSION["counter"]=0;
    }
    if (isset($_SESSION["counter"])) {
        $count = $_SESSION["counter"];
        $daten = array($vorname,$nachname);
        $_SESSION["save"]["teilnehmer".$count] = $daten;
        $_SESSION["counter"]++;
    }
}
?>
HTML-Datei mit Formularfeldern
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Anmeldung</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="anmeldung.php?action=1">
  <label>Vorname
  <input type="text" name="vorname" id="vorname" />
  </label>
  <p>
    <label>Nachname
    <input type="text" name="nachname" id="nachname" />
    </label>
  </p>
  <p> 
    <input type="submit" name="save" id="save" value="Teilnehmer speichern" />
  </p>
</form>
<form id="form1" name="form1" method="post" action="anmeldung.php?action=2">
  <p> 
    <input type="submit" name="save" id="save" value="Session zerstöhren" />
  </p>
</form>
</body>
</html>

Irgendwie wird immer nur das aktuelle Array ausgegeben welches gerade per $_POST übergeben wurde
 

Christian

verpeilt & verschallert

AW: Array in Session wird nicht gespeichert

Man kann keine Array in einer Session abspeichern, aber um das besser zu verstehen solltest Du Dir mal das Header - Request - Modell für Browser reinziehen (einfach googeln.)
Es gibt aber tatsächlich mit einem Workaround.
und zwar wenn Du das array s.erialisierst ( http://www.php.net/s.erialize ) (ohne Punkt, "s.erial" ist hier im Forum ein Badword)
D.h. Du schreibst
PHP:
$_SESSION["save"]["teilnehmer".$count] = s.erialize($daten);
(auch ohne Punkt nach dem s)
und wenn Du die Daten wieder aufrufen möchtest benutzt Du:
PHP:
$array = uns.erialize($_SESSION["save"]["teilnehmer3"]);
echo $array[0]
(Wieder ohne Punkt)
 
Zuletzt bearbeitet:
P

p_dieter

Guest

AW: Array in Session wird nicht gespeichert

aha ... hab in so vielen G-Suchberichten immer darüber gelesen, dass Array im $_SESSION-Array möglich wären.

Der Sinn dahinter ist ja der, dass wenn man mehrere Personen anmelden möchte ich diese im Array speichere (zur Not auch mehrere Session-Variablen), diesen dann im Schritt 2 des Formulars nach andere Daten zuhänge und am ende alles in einer DB speicher.

wenn ich so darüber nachdenke könnte ich ja mittels

PHP:
$_SESSION["Vorname".$count] = $_POST["vornamen"]
... das ganze ja in unterschiedliche Variablen speichern. sollte ja so auch funktionieren.

Denk mal das sollte nicht so das Problem sein, da ich mal davon ausgehe, dass in einer weiterführenden Version sicher nie mehr als, Hausnummer 20, ganze Personendaten (VN, NN, Str., Nr., PLZ, etc.) vorhanden sein werden.
 

CIX88

Aktives Mitglied

AW: Array in Session wird nicht gespeichert

Sicher kann man ein Array in einer Session speichern!
Man muss nur im JEDEM Script die Session mit session_start() starten.
 

Chickenshooter

Alter Mann

AW: Array in Session wird nicht gespeichert

Moin,

1. um CIX88 zuzustimmen, ja man kann ohne Verränkungen einen Array in der Session speichern.
PHP:
$_SESSION['POST'] = $_POST;
macht zwar keinen Sinn aber es geht.

2. $_SESSION["save"]=array();
in PHP brauchst Du nicht inizialisieren.

3. $_GET[action]
gibt es nicht in Deinem Fall.
Du überträgst Dein Formula mit POST (method="POST").

4. echo include "formular_1.html";
ist totaler "Blödsinn" vor einem include steht nichts (außer // oder #) vielleicht.
PHP:
include("Dateiname.php");
wenn in Dateiname.php nur HTML ist dann
wird diese an der Stelle ausgegeben an der das include steht.

MfG Chick
 
P

p_dieter

Guest

AW: Array in Session wird nicht gespeichert

sicher übertrage ich mein Formular mit der Methode POST, doch gebe ich der Action im Formular die GET-Variable mit um meine Fälle zu unterscheiden.

Das wären in dem Fall dann eben die SAVE-Methode in der ich die Daten in die SESSION speicher, Fall 2 zZ. ja mit dem session_unset welcher ja später hier weg kommt und dann zum EDITIEREN gedacht ist usw.


aber wenn man arrays in SESSIONS speichern kann wieso funktioniert der Code dann nicht?

Speicher ja bei jedem absenden des Formulars die Daten in das gleiche Array welches durch die Laufvariable counter immer eines nach vorne hüpft?
 

CIX88

Aktives Mitglied

AW: Array in Session wird nicht gespeichert

> if (isset($_SESSION["counter"])) {

Ich würde da eher:

if ( $_SESSION["counter"] > 0 ) {

schreiben. So wie ich das sehe, wird dein Array erst gefüllt, wenn $_SESSION["counter"] einen Wert hat. Ist dieser 0 bzw. false dann kann dein Array auch nicht erstellt werden.
 

EnricoS

Nicht mehr ganz neu hier

AW: Array in Session wird nicht gespeichert

Wie sieht Deine php.ini aus? Bzw. was sagt phpself()
session.use_trans_sid = on oder session.use_trans_sid = off
Bei off musst Du die Session_ID selbst mit übergeben.

Und was ist $_GET[action]?
Ist >action< eine Konstante? Dann ist wäre $_GET[action] richtig.
>action< ist bei Dir eine Variable, dann sprich sie auch mit $_GET['action'] richtig an.

Gruß
Enrico
 

afr0kalypse

Allwissendes Karmameerschweinchen!

AW: Array in Session wird nicht gespeichert

ich denk auch, dass bei $_GET[action] der fehler liegt. es muss 'action' oder "action" heißen.
da $_GET[action] falsch und demnach nicht gesetzt ist, wird die funktion nicht aufgerufen und die session nicht mit variablen gefüllt :)
 
P

p_dieter

Guest

AW: Array in Session wird nicht gespeichert

hm ... hidden felder?

würd auch gehen ... dann weäre die URL zumindest ohne Variablen ... mal sehen ob ich das ganze jetzt noch so umschreibe.

Mittlerweile durch eure Hilfe funktiniert einiges bis fast alles.

Danke euch dafür.

zZ. werden 14 verschiedene Fälle unterschieden welche eine unterschiedliche Bearbeitung erfordern.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.614
Beiträge
1.538.351
Mitglieder
67.525
Neuestes Mitglied
mgtaucher
Oben