Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
BernbaZ
Threadersteller
Dabei seit: 22.08.2006
Ort: 127.0.0.1
Alter: -
Geschlecht:
|
Verfasst Di 22.08.2006 19:45
Titel Sessions Problem |
|
|
Hallo Leute,
Ich habe ein Problem mit Sessions. Ich erstelle einen Fragebogen (multiple choice) mit 30 Fragen a 3 Antworten wovon nur eine Antwort richtig ist und mit einen Punkt honoriert wird, es gibt je 3 Fragen pro Seite (also 10 insgesamt). Die Antworten sind mit Radiobuttons realisiert. Es gibt noch eine letze Seite die die Punkte zusammenfasst und ein Feedback präsentiert.
Wie gesagt pro richtige Antwort gibt es einen Punkt.(zähler läuft mit...)
Weiss vielleicht jemand warum die Punkte nicht summiert werden? Beantwortet man z.B. die ersten 3 Fragen, werden die Punkte an die 2. Seite übergeben. Auf der 3. Seite gehen die von Seite 1 verloren oder werden überschrieben.
Kurz gesagt: Die Variable des Zählers wird nicht an die folgenden Seiten weitergegeben. Ich hoffe jemand weiß woran es liegt, das würde mir sehr helfen.
Vielen vielen Dank im voraus.
|
|
|
|
|
m0rb
Dabei seit: 30.09.2004
Ort: Fürth
Alter: 38
Geschlecht:
|
Verfasst Di 22.08.2006 20:15
Titel
|
|
|
Hi BernbaZ,
zeig doch mal deinen Code, dann können wir dir sicherlich besser weiterhelfen. Generell kannst du die Punkte mit GET, POST oder eben über eine Session "durchreichen", wobei letzteres wohl das einfachste sein sollte.
Gruß
|
|
|
|
|
Anzeige
|
|
|
Ivan
Dabei seit: 17.04.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 22.08.2006 20:51
Titel
|
|
|
Hallo BernbaZ,
Die Session(-Variablen) hast du nur in den Dateien verfügbar, in denen du session_start(); setzt.
Aber evtl. verweigert dein Browser auch Cookies...dann müsste die SID (Session-ID) entweder per URL oder über ein Hidden-Feld im Formular weitergegeben werden.
Gruß
Ivan
Zuletzt bearbeitet von Ivan am Di 22.08.2006 20:52, insgesamt 1-mal bearbeitet
|
|
|
|
|
BernbaZ
Threadersteller
Dabei seit: 22.08.2006
Ort: 127.0.0.1
Alter: -
Geschlecht:
|
Verfasst Di 22.08.2006 21:10
Titel
|
|
|
hallo hoffe der code bringt euch nicht zum lachen, hab "alles zu fuss" gecodet. weil das mit dem array auch nicht so klappen wollte...
also mein code sieht so aus:
check.inc.php
Code: |
<?php
// Daten empfangen
$frage1 = $_REQUEST['frage1'];
$frage2 = $_REQUEST['frage2'];
$frage3 = $_REQUEST['frage3'];
$frage4 = $_REQUEST['frage4'];
$frage5 = $_REQUEST['frage5'];
$frage6 = $_REQUEST['frage6'];
$frage7 = $_REQUEST['frage7'];
$frage8 = $_REQUEST['frage8'];
$frage9 = $_REQUEST['frage9'];
$frage10 = $_REQUEST['frage10'];
$frage11 = $_REQUEST['frage11'];
$frage12 = $_REQUEST['frage12'];
$frage13 = $_REQUEST['frage13'];
$frage14 = $_REQUEST['frage14'];
$frage15 = $_REQUEST['frage15'];
$frage16 = $_REQUEST['frage16'];
$frage17 = $_REQUEST['frage17'];
$frage18 = $_REQUEST['frage18'];
$frage19 = $_REQUEST['frage19'];
$frage20 = $_REQUEST['frage20'];
$frage21 = $_REQUEST['frage21'];
$frage22 = $_REQUEST['frage22'];
$frage23 = $_REQUEST['frage23'];
$frage24 = $_REQUEST['frage24'];
$frage25 = $_REQUEST['frage25'];
$frage26 = $_REQUEST['frage26'];
$frage27 = $_REQUEST['frage27'];
$frage28 = $_REQUEST['frage28'];
$frage29 = $_REQUEST['frage29'];
$frage30 = $_REQUEST['frage30'];
$senden = $_REQUEST['senden'];
$_SESSION['frage1'] = $frage1;
$_SESSION['frage2'] = $frage2;
$_SESSION['frage3'] = $frage3;
$_SESSION['frage4'] = $frage4;
$_SESSION['frage5'] = $frage5;
$_SESSION['frage6'] = $frage6;
$_SESSION['frage7'] = $frage7;
$_SESSION['frage8'] = $frage8;
$_SESSION['frage9'] = $frage9;
$_SESSION['frage10'] = $frage10;
$_SESSION['frage11'] = $frage11;
$_SESSION['frage12'] = $frage12;
$_SESSION['frage13'] = $frage13;
$_SESSION['frage14'] = $frage14;
$_SESSION['frage15'] = $frage15;
$_SESSION['frage16'] = $frage16;
$_SESSION['frage17'] = $frage17;
$_SESSION['frage18'] = $frage18;
$_SESSION['frage19'] = $frage19;
$_SESSION['frage20'] = $frage20;
$_SESSION['frage21'] = $frage21;
$_SESSION['frage22'] = $frage22;
$_SESSION['frage23'] = $frage23;
$_SESSION['frage24'] = $frage24;
$_SESSION['frage25'] = $frage25;
$_SESSION['frage26'] = $frage26;
$_SESSION['frage27'] = $frage27;
$_SESSION['frage28'] = $frage28;
$_SESSION['frage29'] = $frage29;
$_SESSION['frage30'] = $frage30;
// Variablen anlegen
$erg;
$gesamt = 30;
$punkte = 1;
$fragen = array($frage1, $frage2, $frage3, $frage4, $frage5, $frage6, $frage7, $frage8, $frage9, $frage10,
$frage11, $frage12, $frage13, $frage14, $frage15, $frage16, $frage17, $frage18, $frage19, $frage20,$frage21, $frage22, $frage23, $frage24, $frage25, $frage26, $frage27, $frage28, $frage29, $frage30,);
if(isset($senden)){
if($frage1 == '2')
$erg += $punkte;
if($frage2 == '1')
$erg += $punkte;
if($frage3 == '3')
$erg += $punkte;
if($frage4 == '2')
$erg += $punkte;
if($frage5 == '1')
$erg += $punkte;
if($frage6 == '3')
$erg += $punkte;
if($frage7 == '2')
$erg += $punkte;
if($frage8 == '1')
$erg += $punkte;
if($frage9 == '3')
$erg += $punkte;
if($frage10 == '2')
$erg += $punkte;
if($frage11 == '1')
$erg += $punkte;
if($frage12 == '3')
$erg += $punkte;
if($frage13 == '2')
$erg += $punkte;
if($frage14 == '1')
$erg += $punkte;
if($frage15 == '3')
$erg += $punkte;
if($frage16 == '2')
$erg += $punkte;
if($frage17 == '1')
$erg += $punkte;
if($frage18 == '3')
$erg += $punkte;
if($frage19 == '2')
$erg += $punkte;
if($frage20 == '1')
$erg += $punkte;
if($frage21 == '3')
$erg += $punkte;
if($frage22 == '2')
$erg += $punkte;
if($frage23 == '1')
$erg += $punkte;
if($frage24 == '3')
$erg += $punkte;
if($frage25 == '2')
$erg += $punkte;
if($frage26 == '1')
$erg += $punkte;
if($frage27 == '3')
$erg += $punkte;
if($frage28 == '2')
$erg += $punkte;
if($frage29 == '1')
$erg += $punkte;
if($frage30 == '3')
$erg += $punkte;
}
?> |
runde_01.php
Code: |
<?php
session_start();
$_SESSION['frage1'] = $frage1;
$_SESSION['frage2'] = $frage2;
$_SESSION['frage3'] = $frage3;
?>
<!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" lang="en_US" xml:lang="en_US">
<!--
* Created on 22.08.2006
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
-->
<head>
<title> </title>
</head>
<body>
<form action="runde_02.php" method="post" name="check">
<span><strong>Thema: 1</strong></span><br />
Frage 1: <br />
<input type="radio" name="frage1" value="1" />A1<br />
<input type="radio" name="frage1" value="2" />A2<br />
<input type="radio" name="frage1" value="3" />A3<br />
Frage 2: <br />
<input type="radio" name="frage2" value="1" /><br />
<input type="radio" name="frage2" value="2" /><br />
<input type="radio" name="frage2" value="3" /><br />
Frage 3:<br />
<input type="radio" name="frage3" value="1" /><br />
<input type="radio" name="frage3" value="2" /><br />
<input type="radio" name="frage3" value="3" /><br /><br />
<input type="submit" name="senden[0]" value="weiter"/>
</form>
<?php
echo "<strong>$punkte</strong> von $gesamt Punkten.";
?>
</body>
</html>
|
runde_02.php
Code: |
<?php
// session_cache_limiter("private");
header("Cache-control: private");
session_start();
$_SESSION['frage4'] = $frage4;
$_SESSION['frage5'] = $frage5;
$_SESSION['frage6'] = $frage6;
include ("check.inc.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" lang="en_US" xml:lang="en_US">
<!--
* Created on 22.08.2006
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
-->
<head>
<title> </title>
</head>
<body>
<form action="runde_03.php" method="get" name="check">
<span><strong>Thema: 2</strong></span><br />
Frage 4:<br />
<input type="radio" name="frage4" value="1" /><br />
<input type="radio" name="frage4" value="2" /><br />
<input type="radio" name="frage4" value="3" /><br />
Frage 5:<br />
<input type="radio" name="frage5" value="1" /><br />
<input type="radio" name="frage5" value="2" /><br />
<input type="radio" name="frage5" value="3" /><br />
Frage 6:<br />
<input type="radio" name="frage6" value="1" /><br />
<input type="radio" name="frage6" value="2" /><br />
<input type="radio" name="frage6" value="3" /><br /><br />
<input type="submit" name="senden[1]" value="weiter"/><br />
</form>
<?php
echo "bisher erreicht <strong>".(0+$erg)."</strong> von $gesamt Punkten.";
?>
</body>
</html>
|
und so weiter. dann gibt es noch die
auswertung.php
Code: |
<?php
header("Cache-control: private");
session_start();
include("check.inc.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" lang="en_US" xml:lang="en_US">
<!--
* Created on 22.08.2006
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
-->
<head>
<title>Auswertung</title>
</head>
<body>
<?php
echo "Das Ergebnis deines Checks:<br />Du hast <strong>".(0+$erg)."</strong> von $gesamt Punkten erreicht.</br>";
print_r($_SESSION);
?>
</body>
</html>
|
was ich nicht verstehe ist, das die var $erg nicht weitergegeben wird. falls sie überschrieben wird was ich vermute, weiß ich nicht wie ich das ändern soll. hoffe ihr habt eine idee, das wäre echt toll...
|
|
|
|
|
Ivan
Dabei seit: 17.04.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 22.08.2006 21:23
Titel
|
|
|
boah...bei dem Quellcode
Das sieht ja aus
Naja, also, dass $erg überschrieben wird, is ja wohl klar:
Code: | $erg;
$gesamt = 30;
$punkte = 1; |
Und das wird bei jedem Aufruf der Seiten gemacht.
Heisst, die Variable $erg wird nach jeder dritten Frage überschrieben.
du musst die Variable $erg jedes Mal mit bspw. $_SESSION["erg"] übergeben.
Nicht jedes Mal neu initialisieren.
|
|
|
|
|
BernbaZ
Threadersteller
Dabei seit: 22.08.2006
Ort: 127.0.0.1
Alter: -
Geschlecht:
|
Verfasst Di 22.08.2006 22:27
Titel
|
|
|
@ Ivan, danke für dein deutliches statement
ist nicht ironisch gemeint, schließlich will was lernen.
hab den code etwas komprimiert. $_SESSIONS['erg'], funktioniert auch nicht. obwohl ich im ganzen code rumgeschoben habe. wenn ich es drin lasse krieg ich von Eclipse so eine Meldung:
Zitat: | Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0 |
hier noch mal der geänderte code von
check.inc.php
Code: | <?php
// Daten empfangen
$_SESSION['frage1'] = $frage1;
$_SESSION['frage2'] = $frage2;
$_SESSION['frage3'] = $frage3;
$_SESSION['frage4'] = $frage4;
$_SESSION['frage5'] = $frage5;
$_SESSION['frage6'] = $frage6;
$_SESSION['frage7'] = $frage7;
$_SESSION['frage8'] = $frage8;
$_SESSION['frage9'] = $frage9;
$_SESSION['frage10'] = $frage10;
$_SESSION['frage11'] = $frage11;
$_SESSION['frage12'] = $frage12;
$_SESSION['erg'] = $erg;
// Variablen anlegen
$gesamt = 30;
$punkte = 1;
// $fragen = array($frage1, $frage2, $frage3, $frage4, $frage5, $frage6, $frage7, $frage8, $frage9, $frage10, $frage11, $frage12);
if(isset($_REQUEST['frage1'.$frage1]) == '2'){$erg += $punkte;}
if(isset($_REQUEST['frage2'.$frage2]) == '1'){$erg += $punkte;}
if(isset($_REQUEST['frage3'.$frage3]) == '3'){$erg += $punkte;}
if(isset($_REQUEST['frage4'.$frage4]) == '2'){$erg += $punkte;}
if(isset($_REQUEST['frage5'.$frage5]) == '1'){$erg += $punkte;}
if(isset($_REQUEST['frage6'.$frage6]) == '3'){$erg += $punkte;}
if(isset($_REQUEST['frage7'.$frage7]) == '2'){$erg += $punkte;}
if(isset($_REQUEST['frage8'.$frage8]) == '1'){$erg += $punkte;}
if(isset($_REQUEST['frage9'.$frage9]) == '3'){$erg += $punkte;}
if(isset($_REQUEST['frage10'.$frage10]) == '2'){$erg += $punkte;}
if(isset($_REQUEST['frage11'.$frage11]) == '1'){$erg += $punkte;}
if(isset($_REQUEST['frage12'.$frage12]) == '3'){$erg += $punkte;}
?>
|
und so sieht jetzt die runde_02.php aus
Code: | <?php
// session_cache_limiter("private");
header("Cache-control: private");
session_start();
?>
<!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" lang="en_US" xml:lang="en_US">
<!--
* Created on 22.08.2006
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
-->
<head>
<title> </title>
</head>
<body>
<form action="runde_03.php" method="post" name="check">
<span><strong>Thema: 2</strong></span><br />
Frage 4:<br />
<input type="radio" name="frage4" value="1" /><br />
<input type="radio" name="frage4" value="2" /><br />
<input type="radio" name="frage4" value="3" /><br />
Frage 5:<br />
<input type="radio" name="frage5" value="1" /><br />
<input type="radio" name="frage5" value="2" /><br />
<input type="radio" name="frage5" value="3" /><br />
Frage 6:<br />
<input type="radio" name="frage6" value="1" /><br />
<input type="radio" name="frage6" value="2" /><br />
<input type="radio" name="frage6" value="3" /><br /><br />
<input type="submit" name="senden[1]" value="weiter"/><br />
</form>
<?php
include ("check.inc.php");
echo "bisher erreicht <strong>".(0+$erg)."</strong> von $gesamt Punkten.";
?>
</body>
</html>
|
meinst du vielleicht, $_SESSION['erg'] mit (0+$erg) ersetzen? das hab ich gerade probiert aber auch nix. wenn du noch ne idee hast wäre ich sehr dankbar. sitze schon den ganzen tag dran, klicke mich durch tutorials, manuals und foren und alles ohne ergebnis... sorry, will dich nicht volljammern
Zuletzt bearbeitet von BernbaZ am Di 22.08.2006 22:35, insgesamt 2-mal bearbeitet
|
|
|
|
|
Ivan
Dabei seit: 17.04.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 22.08.2006 22:46
Titel
|
|
|
Ich würde das ganze System anders aufbauen.
Allerdings müsste ich mir auch erstmal was überlegen.
Werde mich aber nochmal melden, wenn ich
eine Lösung gefunden habe.
Nur zum Verständnis:
Du hast pro Seite 3 Fragen. Und auf jeder Seite
willst du die aktuell erreichte Punktzahl anzeigen lassen?
Gruß
Ivan
|
|
|
|
|
BernbaZ
Threadersteller
Dabei seit: 22.08.2006
Ort: 127.0.0.1
Alter: -
Geschlecht:
|
Verfasst Di 22.08.2006 22:58
Titel
|
|
|
Hi Ivan,
ja das ist richtig. 3 Fragen mit je drei Antworten pro Seite und die Punktezahl anzeigen.
Bin total erledigt heute, hau mich aufs ohr.
Ich danke dir vielmals, dass Du dir soviel Zeit genommen hast.
Gruß BernbaZ
|
|
|
|
|
|
|
|
Ähnliche Themen |
problem mit sessions
Sessions-Problem bei PHP
[PHP] Sessions - Problem
[Solved] Problem mit Cookies bzw. Sessions
Sicherheit von Sessions
PHP-Sessions mit Xampp 1.5.0
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|