Viele Variablen über mehrere Seiten verwenden

WiZdooM

Erfahrenes Mitglied
Hallo

Ich habe folgendes Problem:
Im Formular 1 sind etwa 20 - 25 Eingabefelder. Mit dem Klick auf submit erhält man eine printvorschau in der via echo die variablen ausgegeben werden. Jetzt benötige ich jedoch einen Teil dieser Variablen nocheinmal in einem weiteren Formular mit auch etwa 20 Eingabefeldern, was später auch wieder in einer Druckvorschau endet; sprich: Formular 1 - Druckvorschau1 - Formular 2 - Druckvorschau 2

Jetzt meine Frage wie ich das am besten lösen kann.
 
Ja entweder Session oder übergib doch die Variablen in ein weiteres Array und übergib dieses an deine 2. seite

Sessions hab ich auch schon dran gedacht, aber kenne mich damit Null aus. Braucht man für jede zu übergebende Variable eine eigene Sessionvariable ?
Ich friemel den ganzen Morgen schon mit den 3 Happen Code aus dem Tut (http://www.php-resource.de/tutorials/read/9/1/) rum, ohne dass ich im 2. Formular auch nur ansatzweise was eingefügt bzw. angezeigt bekomme. Anscheinend ist meine $_SESSION['xyz'] leer...

Wie würde ich ein Array an eine weitere Seite übergeben können ?

Gruß
Wiz
 
Zuletzt bearbeitet:
Sessions hab ich auch schon dran gedacht, aber kenne mich damit Null aus. Braucht man für jede zu übergebende Variable eine eigene Sessionvariable ?
Ich friemel den ganzen Morgen schon mit den 3 Happen Code aus dem Tut (http://www.php-resource.de/tutorials/read/9/1/) rum, ohne dass ich im 2. Formular auch nur ansatzweise was eingefügt bzw. angezeigt bekomme. Anscheinend ist meine $_SESSION['xyz'] leer...

Wie würde ich ein Array an eine weitere Seite übergeben können ?

Gruß
Wiz
Erkläre es mal genauer was du möctest, poste mal deine seite und sage welche der variablen du weiterverwenden möchtest, im grunde kannst du alle deine variablen über "implode" in eine session schreiben und dann einzeln abfragen
bsp:
PHP:
 <?
session_start();
for($i=0; $i<count($_POST);$i++) {
$_SESSION['variablen'] = implode("-", $_POST);
}

?>
<form action="js.php" method="post" name="js">
<input name="text" type="text" />
<input name="senden" type="submit" value="senden" />

</form>
<? print ($_SESSION['variablen']) ?>

vielicht hilft dir dies kleine beispiel, probiere es aus und trag auch mal was im textfeld ein
 
Hey Frogg06

Im Prinzip ist es recht Simpel. Ich habe ein Formular, dass einem Kaufvertrag für gebrauchte KFZ entspricht. Auf diesem Formular existieren also Felder wie Name, Adresse, Telefonnummer, Fahrzeugdaten, Preis. Eben das ganze Drumherum was man so aus Kaufverträgen kennt. Das wird für Kunden (Händler) online hinter einem gesicherten Login-Script liegen. Nachdem nun der Händler das Formular ausgefüllt hat wird der Kunde auf die Drückübersicht weitergeschleust, die ihn anweisen wird 3 Exemplare zu drucken. Anschließend ist beabsichtigt, den Händler auf ein weiteres Formular (für eine Garantievereinbarung) zu führen, auf dem bereits einige der Daten (jedoch nicht alle!) aus dem Kaufvertrag automatisch übernommen werden sollen. Nachdem der Händler dies nun auch ausgefüllt hat, kommt auch hier die Druckaufforderung für 3 Exemplare und die Übertragung der Garantiedaten in die Datenbank. Prinzipiell sind die Daten des Kaufvertrags nur bedingt relevant - nämlich nur dann wenn sie in der Garantievereinbarung stehen und in die Datenbank überführt werden sollen/bzw die Garantievereinbarung gedruckt wird.

Wenn ich Deinen Code richtig deute, baut implode einen String der Inputfelder, getrennt durch ein "-". Aber wie kann ich nun auf ein spezielles Element zugreifen ? Z.B. wenn ich das Feld Motornummer zwar im Kaufvertrag benötige aber ich nicht in der Garantievereinbarung ? Ich muss wahrscheinlich einen Stringteiler einsetzen...

Danke für die Tips, Hilfen und Hinweise bisher.

P.S.: Meine Testseite auf deren Basis ich den Initialpost geschrieben hab, hat irgendwie herumgesponnen, nach einem neuanlegen des Sessionkonstrukts ging's dann.

Edith sagt: Mal ne richtig geile Sache das Implode. Habe das eben ausprobiert und kann nur sagen Hut ab! Jedoch kann ich nur alle Variablen in einem Klumpen ausgeben, was für das drucken des Formulars inakzeptabel ist.
 
Zuletzt bearbeitet:
In dieser Session liegt jetzt ein String der durch "-" getrennt ist, frage sie einfach ab . Nimm mal meinen Code und explode die Session einfach dort wo du sie brauchst
PHP:
<?
$daten=explode("-",$_SESSION['variablen']) ;
for ($i=0;$i<count($daten);$i++) {
echo $daten[$i]."<br>";
}
?>
Du kannst jetzt die Element einzeln ausgeben bsp:
PHP:
echo $daten[1];

Nachbrenner ;o) versuche es mal so:
PHP:
<? 
session_start(); 
$_SESSION['variablen']=$_POST;
?> 
<form action="js.php" method="post" name="js"> 
<input name="text" type="text" /> 
<input name="senden" type="submit" value="senden" /> 

</form> 
<? foreach ($_SESSION['variablen'] as $key=>$value) {
    echo "$key = $value <br>";
} ?>
da hast du jetzt sogar noch die Keys deiner Formularfelder
 
Hey Frogg06,

ich sag nur eins: Danke.

Was hälst du von meiner Modifikation:

PHP:
<?php
session_start(); 
$daten['multi']=$_POST;
foreach($daten['multi'] as $key=>$value){
    $_SESSION[$key]=$value;
}
?>

<form method="post" action="test2.php">
    <input name="Text1" type="text" />
    <input name="Text2" type="text" />
    <input name="Text3" type="text" />
    <input name="Submit1" type="submit" value="Absenden" />
</form>

<?php
echo $_SESSION['Text2'];
?>

Diese Variante setzt natürlich vorraus dass man die Bezeichner seiner Formularfelder, die man benutzt bzw verwenden will, kennt. Ich finde diese Variante recht übersichtlich (allein aus Codingaspekten)
 
Zurück