PDA

Vollstndige Version anzeigen : Variablen auf jeder Folgeseite verwenden


DieFliege
26-05-2004, 21:26
Hallo,

ich hab schon wieder mal eine Frage zu Variablen. Ich hab aber voher intensiv gesucht, leider nicht die Informationen gefunden die ich suche.

Zum Problem:

Ich mchte einen Konfigurator erstellen. Dieser erstreckt sich ber 5 php-Seiten.
Auf jeder Seite befindet sich ein Formular, damit werden die Daten vom Benutzer abgefragt.
Auf jeder Seite sollen sich die Informationen der vorhergehenden Seite wiederholen, quasi als berblick.
Ich kann bisher nur die Daten aus der Vorseite bernehmen, nicht der Vor-Vorseite. Ich wollte die GET-Funktion mit der URL nicht nutzen.

Hier meinen Quelltext:

Seite 1:
==================================================
<h1>Stufe 1</h1><br>
<form action = "stufe2.php" method = "post">

<select name="laufwerk">
<option>FDD</option><br>
<option>HDD</option><br>
<option>DVD</option><br>
</select>
<select name="speicher">
<option>256MB</option><br>
<option>512MB</option><br>
<option>1024MB</option><br>
</select>

<input type="submit" name="submit" value="weiter">
</form>

Seite 2:
==================================================
<h1>Stufe 2</h1><br>
<?php
$daten[1] = $_POST['laufwerk'];
$daten[2] = $_POST['speicher'];
echo "Laufwerk: $daten[1], Speicher: $daten[2]";
?>

<form action = "stufe2.php" method = "post">

<select name="monitor">
<option>15 Zoll</option><br>
<option>17 Zoll</option><br>
<option>19 Zoll</option><br>
</select>
<input type="submit" name="submit" value="Absenden">
</form>


Seite 3:
==================================================
<?php
$monitor = $_POST['monitor'];
echo "Laufwerk: $daten[1], Speicher: $daten[2]<br>";
echo "Monitor: $monitor<br>";
?>

<form action = "stufe3.php" method = "post">

<select name="test">
<option>Hallo</option><br>
<option>Du</option><br>
<option>Wer</option><br>
</select>
<input type="submit" name="submit" value="Absenden">
</form>

Das ist die vereinfachte Version, des Konfigurators. Mein Problem, auf Seite 3 komme ich nicht mehr an die Daten aus dem Array "daten". Lieber wrde ich die neuen Informationen (hier die Variable "monitor") ebenfalls in das Array schreiben, damit ich immer nur eine Variable bergeben muss.

Wer kann mir helfen? Ich hoffe ich habe verstndlich erklrt, was ich mchte.

Gru DieFliege

feuervogel
26-05-2004, 22:46
willkommen im forum!

wie wrs mit sessions?

DieFliege
26-05-2004, 22:48
Hallo Feuervogel,

danke ...

An Sessions habe ich auch schon gedacht, aber dazu mssen die Cookies bei den Nutzern eingeschaltet sein, soweit ich weis.

Gru DieFliege

feuervogel
26-05-2004, 23:20
oder die sid wird automatisch per url weitergegeben, insofern es in der php.ini so eingestellt ist.

DieFliege
27-05-2004, 10:33
Hi,

gibt es keine Mglichkeit, die bereits vorhandenen Variablen mit einem Formular "neu-zu-posten" damit sie auf der Folgeseite zur Verfgung stehen?

Beispiel:


Seite 1:
- Absenden Daten aus Formular 1


Seite 2:
- Auslesen Daten aus Seite 1
- Absenden Daten aus Formular 2 und Neusenden "alter Daten"


Seite 3:
- Auslesen "alter Daten"
- Auslesen Daten aus Seite 2
- Ergnzen "alter Daten" mit "neuen Daten"
- Absenden Daten aus Formular 3 und Neusenden "alter Daten"

u.s.w.

Das mit Sessions finde ich nicht so gut.
Und in eine Datei schreiben geht nicht, wenn 2 Nutzer gleichzeitig zugreifen, geht das in die Hose.

Hoffentlich hat jemand eine Idee.

Gre DieFliege

bazubi
27-05-2004, 10:36
Ja gibt es. Du musst auf den Folgeseiten in das Formular ein <input type="hidden" name="wertXausformularY" value="$_POST['wertXausVorgngerformular']"> einbauen.

DieFliege
27-05-2004, 11:16
Hallo bazubi,

danke, das ist der richtige Weg.

Ich habs jetzt soweit verstanden, leider fehlt mir noch der/die richtige Syntax.

<input type="hidden" name="wertXausformularY" value="$_POST['wertXausVorgngerformular']">


Statt "wertXausformularY" kann ich ja einen X-beliebigen Namen eingeben. Dem bergebe ich einen Wert (Value).

Ich habe nun folgendes im Quelltext:

<?php
$lw = $_POST['laufwerk'];
$ram = $_POST['speicher'];
echo "Laufwerk: $lw, Speicher: $ram";
?>
<!--- hiermit weise ich den Variablen einen Wert aus der Vorseite zu und gebe sie aus --->


<form action = "stufe3.php" method = "post">
<input type="hidden" name="laufwerk" value="test">
<input type="hidden" name="speicher" value="<?php $_POST['speicher'] ?>">
<select name="monitor">
<option>15 Zoll</option><br>
<option>17 Zoll</option><br>
<option>19 Zoll</option><br>
</select>
<input type="submit" name="submit" value="Absenden">
</form>

Beim 1. INPUT Laufwerk -> Value="test" funktioniert die bergabe.
Beim 2. INPUT gehts leider nicht, ich habs mit "<?php xxx ?> und ohne versucht.

Was mache ich falsch?

Gru DieFliege

feuervogel
27-05-2004, 11:19
gibt es keine Mglichkeit, die bereits vorhandenen Variablen mit einem Formular "neu-zu-posten" damit sie auf der Folgeseite zur Verfgung stehen?


warum umstndlich, wenns auch einfach geht?

warum benutzt du keine sessions?

DieFliege
27-05-2004, 11:56
Hallo feuervogel,

deshalb:

Warning: Cannot send session cookie - headers already sent by (output started at /mnt/ls1/04/534/00000023/htdocs/test/stufe2.php:10) in /mnt/ls1/04/534/00000023/htdocs/test/stufe2.php on line 12

Warning: Cannot send session cache limiter - headers already sent (output started at /mnt/ls1/04/534/00000023/htdocs/test/stufe2.php:10) in /mnt/ls1/04/534/00000023/htdocs/test/stufe2.php on line 12

Dazu der Quelltext:

<?php

session_start();
$daten[1]= $_POST['laufwerk'];
$daten[2]= $_POST['speicher'];
session_register("daten");

echo "Laufwerk: $daten[1], Speicher: $daten[2]<br>";
?>

<form action = "stufe3.php" method = "post">
<select name="monitor">
<option>15 Zoll</option><br>
<option>17 Zoll</option><br>
<option>19 Zoll</option><br>
</select>
<input type="submit" name="submit" value="Absenden">
</form>

Line 12 = session_start();

Gru DieFliege

bazubi
27-05-2004, 11:59
Zum "Cannot send header()" -> Selfphp.com -> Tipps & Tricks -> Hufige Fehlermeldungen.

Zum anderen Problem:
<input type="hidden" name="speicher" value="<?php echo $_POST['speicher']; ?>">

DieFliege
27-05-2004, 12:22
@ bazubi:

danke, nun funktionierts. jetzt kann ich mich austoben.

Der Verweis zu den Fehlermeldungen habe ich nicht gefunden :-( Werde aber nicht aufgeben, irgendwie geht das ....

Danke nochmal !!!!


@ feuervogel:

das mit den session wrde ich schon gerne machen, mchte aber weder cookies noch ewig-lange URL's nutzen. Dieser Konfigurator ist nur ein Beispiel, ich mchte einen fr Strandkrbe bauen, da gibt es eine Unmenge an Daten, und die in der URL, mmhh, ich weiss nicht ...
Werde mich aber trotzdem noch damit beschftigen, vielleicht finde ich mal eine Anwendung dafr.

Danke nochmal
Gru DieFliege

feuervogel
27-05-2004, 12:37
mchte aber weder cookies noch ewig-lange URL's nutzen.

1. werden die urls nicht ewig lang
2. was spricht gegen die verwendung eines session-cookies?

DieFliege
27-05-2004, 12:44
@ feuervogel:

dass der ein oder andere Nutzer cookies abgeschaltet hat. In einigen Firmen sind die Computer zwar Internetfhig, sind aber Administratorseitig "Keksfrei" und das knnen die Nutzer dann nicht einschalten ..., deshalb. Sonst sind Cookies auf jeden Fall besser, wenns funktioniert.

Gru DieFliege

bazubi
27-05-2004, 12:57
Original geschrieben von DieFliege
@ bazubi:
Der Verweis zu den Fehlermeldungen habe ich nicht gefunden :-( Werde aber nicht aufgeben, irgendwie geht das ....


Sorry, mein Fehler - nimm einfach den Link hier:
http://www.selfphp.com/fragen_antworten/fehlermeldungen/cannot_add_header_information.php

feuervogel
27-05-2004, 13:21
insofern cookies abgeschaltet sind und es in deiner php.ini aktiviert ist, wird die sid eben an den url dran gehngt.

ich arbeite auch mit datenbergabe zwecks ablufen mit mehreren schritten und die vorteile von sessions berwiegen einfach dem aufwand jeder anderen lsung...

DieFliege
27-05-2004, 13:34
@bazubi:

Danke fr den "Lesestoff" ;-)


@feuervogel:

ich habe in der php.ini folgenden Eintrag gendert:

session.auto_start = 0 -> session.auto_start = 1

Ich nehme mal an, dass war das, was du meintest.
Ich habe die Session-Lsung noch nicht in den Wind geschrieben, ich bleib da dran und werde Euch gegebenenfalls nerven ;-)

Gru DieFliege

feuervogel
27-05-2004, 16:24
nein, das war nicht was ich meinte.

ich meinte, wenn der benutzer keine cookies akzeptiert, wird die sid an den url dran gehngt.

das hat nichts damit zu tun, dass du nun automatisch eine session startest.

DieFliege
27-05-2004, 18:27
Hallo feuervogel,

da hast du was angerichtet, ich sitze nun schon den ganzen Tag am Thema Session.

Ich hab mittlerweile auch die Fehlermedungen wegbekommen, aber nun habe ich mal wieder eine Syntaxfrage:

Normalerweise, wenn ich aus einem Formular Daten "Post"e, dann kann ich auf der Folgeseite die Daten mit $_POST den Variablen oder dem Array zuweisen. Wenn ich aber auf der gleichen Seite die Daten bereits dem Array zuweisen mchte, an welcher Stelle und mit welcher Syntax mache ich das? Bisher habe ich die Zuweisung nach dem "Submit". Am besten ich poste den Quelltext:

<?php
session_start();
?>
<html>
<head>
.
.
</head>
<body>
.
.
<form>
.
.
<input type="submit" name="submit" value="nchster Schritt">
</td>
</tr>
</table>
.
.
.
.

<?php
$daten[1] = $_POST['modell'];
$daten[2] = $_POST['sylt'];
$daten[3] = $_POST['ruegen'];
session_register("daten");
?>
</form>
</body>
</html>


Ich hoffe du verstehst was ich mchte?
Gru DieFliege

feuervogel
27-05-2004, 19:39
sehr schn!

ja, ich verstehe was du mchtest.

http://tut.php-q.net/sessions.html

lies dir das mal durch. ich wei nicht, was du dir bisher durch gelesen hast, aber

session_register();

ist uuuuuralt.

eigentlich ist das kein script-schreibe-dienst, aber:



<?php
session_start();
?>
<html>
<head>
.
.
</head>
<body>
.
.
<form>
.
.
<input type="submit" name="submit" value="nchster Schritt">
</td>
</tr>
</table>
.
.
.
.

<?php
$daten[0] = $_POST['modell'];
$daten[1] = $_POST['sylt'];
$daten[2] = $_POST['ruegen'];
$_SESSION[ 'datenarray' ] = $daten;
?>
</form>
</body>
</html>

DieFliege
28-05-2004, 10:01
Hallo feuervogel,

danke fr das Schreiben von "meinem" Script.

Ich hab gedacht, hier im Forum kann ich was lernen, war wohl nicht so.

Ich habe eine "umstndliche" Version zum Laufen gebracht. Danach habe ich mich von einem Profi belehren lassen und hatte leider eine "uuuuuralte" Version entwickelt und diese funktionierte ebenfalls.

Das Posten von Quelltext sollte eigendlich nur mein Problem schildern. Es wrde mir mehr helfen, wenn nach einer Frage der Syntax eine Erluterung oder ein Link zur Erluterung bekomme. Mir ist nicht damit geholfen, Quelltext zu posten und ich nur noch kopieren muss. Damit hab ichs nicht verstanden. Ich wrde schon gerne wissen was ich mache.

Beispiel:

$_SESSION[ 'datenarray' ] = $daten;

Mit "$_SESSION" globalisiere ich die Variable. Doch woher kommt "datenarray"? Ist das eine Funtion? Eine Variable? Was kann ich mit "datenarray" machen?

Ich kann den Quelltext so kopieren, er funktioniert, aber ich habs nicht verstanden.

Ebenso die Einstellung in der php.ini. Da muss was eingestellt werden, was man ndern muss und wie es sich auswirkt, keine Erklrung.

Du brauchst dich nicht weiter zu bemhen, ich werde mich schon irgendwie informieren, dauert zwar ein Weilchen, aber dann hab ichs auch verstanden.

feuervogel
28-05-2004, 10:29
also momentchen mal.

ich habe dir einen link gepostet unter dem das thema sessions meiner ansicht nach sehr gut erlutert wird.

ich dachte, du liest dir das durch.

okay, kurze erklrung zu meinem script:

nach dem du session_start(); in der ersten zeile deines scripts stehen hast, steht dir das array

$_SESSION

zur verfgung.

Um nun Daten fr einen bestimmten Nutzer aufzuheben, muss man sie registrieren. Das macht man einfach, in dem man mit dem Feld $_SESSION arbeitet, wie mit einem gewhnlichen Array.

so steht das unter dem von mir geposteten link.

nun kannst du mit $_SESSION so umgehen wie mit jedem anderen array auch, blo die daten in $_SESSION bleiben auch ber mehrere scriptaufrufe hinweg erhalten, so lange das browserfenster nicht geschlossen wird und auch immer schn session_start(); am anfang des scriptes steht.

es tut mir leid, dir nicht das tutorial am telefon vorgelesen zu haben.

hast du mal versucht, es selbst zu lesen?

p.s.:

Doch woher kommt "datenarray"? Ist das eine Funtion? Eine Variable? Was kann ich mit "datenarray" machen?

$_SESSION[ 'key' ] = $array;

wonach sieht das aus? das $ am anfang von $_SESSION zeichnet wohl diese zeichenfolge als array oder variable aus. nun kommen eckige klammern mit einfachen anfhrungszeichen. demnach wohl ein...array! das element mit dem schlssel key enthlt nun ein array, nmlich $array, welches vorher in deinem script definiert wurde (dort war $array = $daten).

keine funktion, datenarray kommt aus meiner tastatur...bestehen jetzt noch fragen?

feuervogel
28-05-2004, 10:36
ich mchte mich zu dem entschuldigen:

Normalerweise, wenn ich aus einem Formular Daten "Post"e, dann kann ich auf der Folgeseite die Daten mit $_POST den Variablen oder dem Array zuweisen. Wenn ich aber auf der gleichen Seite die Daten bereits dem Array zuweisen mchte, an welcher Stelle und mit welcher Syntax mache ich das?

diese frage habe ich einfach nicht verstanden.

DieFliege
28-05-2004, 11:04
Danke!

xabbuh
28-05-2004, 14:00
Zu dem Problem bezglich der automatischen Anhngung der SID an die URL: Wenn ich mich richtig erinnere muss session.use_trans_id auf on (1) sein, damit die SID automatisch an die URL angehangen wird, falls der User keine Cookies akzeptiert. Wenn session.use_trans_id off ist, musst du die SID selbst an jeden Link und in jedem Formular anhngen:

Link:

<a href="link.php?<?php echo SID; ?>">Link</a>


Formular:

<form method="POST" action="adresse.php?<?php echo SID; ?>">

Jacki
28-05-2004, 20:14
ich hab bis jetzt ur einmal sessions verwendet, und da war es um einiges einfacher als sonst. das einemal sessions war das letzt projekt wo ich sowas gebraucht hab ;)

feuervogel
28-05-2004, 20:19
ich hab bis jetzt ur einmal sessions verwendet, und da war es um einiges einfacher als sonst.

hust? du hast ein mal sessions verwendet, aber dieses eine mal war es einfacher sessions zu verwenden als sonst, also die anderen male die du sessions verwendet hast?

oder meinst du, die verwendung von sessions erleichtert generell? kommt natrlich immer drauf an, was man machen will.