formular & sessions
Heinzi
- php
hi, um ein kleines Quiz zu basteln habe ich bisher folgendes gemacht:
1.) mehrdimensionales Array erstellt.
2.) Formular, welches immer eine Frage inkl. Antworten über einen Counter anzeigt erstellt
3.) der counter wird allerdings nur einmal hochgesetzt, bleibt dann bei 1.
So wird mir immer nur max. die zweite frage angezeigt.
kann mir mal einer ein gutes Session-Tutorail verraten oder Tipps geben, wie ich in dem Formular Sessions händeln kann?
Am besten objektorientiert,da ich das Ganze so aufsetzen wollte.
danke, heinzi
Hi Heinzi!
3.) der counter wird allerdings nur einmal hochgesetzt, bleibt dann bei 1.
So wird mir immer nur max. die zweite frage angezeigt.
Wie sieht dein Code aus?
kann mir mal einer ein gutes Session-Tutorail verraten oder Tipps geben, wie ich in dem Formular Sessions händeln kann?
Am Anfang muss die Funktion session_start() aufgerufen werden. Dann kannst du im vordefinierten Array $_SESSION deine Variablen speichern.
Wo stößt du da auf Probleme?
Am besten objektorientiert,da ich das Ganze so aufsetzen wollte.
Um Sessions zu verstehen, braucht es keine Objektorientierung. Es bringt mMn auch keine Vorteile.
MfG H☼psel
Hi Hopsel,
das Problem ist folgendes:
<? $z = 0;?>
<? $kombi = $this->data; ?>
dann kommm das Formular mit
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<? if (isset($_POST['weiter']))
{
$z++;}
?>
dann den Fragen, Antworten und dem sbumit-Button
<input type="submit" name="weiter" value="weiter" src="<?=BASISURL?>button_img.php?text=weiter&width=101"/>
wie baue ich denn da die Session-vars ein?
hänge im Moment total..
Hi heinzi!
In deinem Code sehe ich weder ein session_start() noch die Benutzung von $_SESSION.
wie baue ich denn da die Session-vars ein?
Du brauchst doch gar keine Sessions.
Schicke den Index der Frage doch einfach in der URL mit.
MfG H☼psel
Hello,
das Problem ist folgendes:
<? $z = 0;?>
Ich nehme an, dass $z der Counter sein soll.
Wann musst Du denn den Counter initialisieren?
Doch wohl nur dann, wenn er _nicht_ vorhanden ist!
<?php
session_start();
if (!isset($_SESSION['z'])
{
$_SESSION['z'] = 0;
}
else
{
$_SESSION['z']++;
}
Brutalprogrammierer schreiben einfach nur
$_SESSION['z']++;
Das ist aber für die Stabilität des Codes nicht gut, auch wenn es bei abgeschalteten Notices "funktioniert"...
Ein harzliches Glückauf
Tom vom Berg
ok.hoffe, dass man hier weiter helfen kann.
Oben ist mein neuer Thread geschlossen worden wg. Doppelposting, obwohl es eigentlich eine neue Problemstellung gab.
Egal, hier mein derzeitiges Prob bzw. der derzeitige stand (Antwort von Cheatah):
___________
Hi,
$sessions = $_POST['ant'];
irreführender Bezeichner. Nenne die Variable z.B. $answer.
$_SESSION['ant'] = $sessions ;
sollte doch eigentlich die Antwort (Formular-name 'ant') als Session-Array speichern oder?
$_SESSION ist ein assoziatives Array, das stimmt. Du überschreibst aber immer den selben Wert darin, nämlich $_SESSION['ant']. Das, was Du in $sessions stehen hast, ist _kein_ Array.
Cheatah
______________
Aber wie kann ich das verhindern, dass der Wert immer überschrieben wird?
Session_start() steht übriegens an anderer (erster) Stelle im Code...
Ist die LÖsung die Parameter an die Url zu hängen eine wirkliche Alternative?
danke, heinzi
Hi, über
<? if($_POST['weiter']=='weiter'): ?>
<? $_SESSION['z']++?>
<? elseif ($_POST['back']=='back'): ?>
<? $_SESSION['z']--?>
<? endif; ?>
<?=$numbers = $this->numQuest;?>
<? $kombi = $this->data; ?>
<? print_r($kombi);echo "<br>";?>
steuere ich im Moment die Zählervariable , die die Fragen ausliest.
IM Firefox funktioniert alles super,
in opera und in IE7 geht gar nichts.
woran kann das denn liegen?
danke heinzi