$totalCorrect++ werkt niet met $_SESSION
Ik heb een score uitslag die 3 punten genereert voor elk goed antwoord. Voorheen werkte dit puur op de POST functie van mijn formulier.
Nu ben ik gaan werken met SESSIONS en werkt mijn score niet meer.
Hoe kan ik deze code omzetten zodat hij de uitslag toont op result.php?
quiz.php (sessions op de quiz pagina)
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
session_start();
$_SESSION["vraag1_antwoorden"] = $_POST["vraag1_antwoorden"];
$_SESSION["vraag2_antwoorden"] = $_POST["vraag2_antwoorden"];
$_SESSION["vraag3_antwoorden"] = $_POST["vraag3_antwoorden"];
$_SESSION["vraag4_antwoorden"] = $_POST["vraag4_antwoorden"];
$_SESSION["vraag5_antwoorden"] = $_POST["vraag5_antwoorden"];
$_SESSION["vraag6_antwoorden"] = $_POST["vraag6_antwoorden"];
?>
session_start();
$_SESSION["vraag1_antwoorden"] = $_POST["vraag1_antwoorden"];
$_SESSION["vraag2_antwoorden"] = $_POST["vraag2_antwoorden"];
$_SESSION["vraag3_antwoorden"] = $_POST["vraag3_antwoorden"];
$_SESSION["vraag4_antwoorden"] = $_POST["vraag4_antwoorden"];
$_SESSION["vraag5_antwoorden"] = $_POST["vraag5_antwoorden"];
$_SESSION["vraag6_antwoorden"] = $_POST["vraag6_antwoorden"];
?>
result.php (score uitslag)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
session_start();
$answer1 = $_SESSION['vraag1_antwoorden'];
$answer2 = $_SESSION['vraag2_antwoorden'];
$answer3 = $_SESSION['vraag3_antwoorden'];
$answer4 = $_SESSION['vraag4_antwoorden'];
$answer5 = $_SESSION['vraag5_antwoorden'];
$answer6 = $_SESSION['vraag6_antwoorden'];
$totalCorrect = 0;
if ($answer1 == "A") { $totalCorrect += 3;}
if ($answer2 == "C") { $totalCorrect += 3;}
if ($answer3 == "C") { $totalCorrect += 3;}
if ($answer4 == "C") { $totalCorrect += 3;}
if ($answer5 == "B") { $totalCorrect += 3;}
if ($answer6 == "C") { $totalCorrect += 3;}
echo $_SESSION['totalcorrect'] = $totalCorrect;
session_destroy();
?>
session_start();
$answer1 = $_SESSION['vraag1_antwoorden'];
$answer2 = $_SESSION['vraag2_antwoorden'];
$answer3 = $_SESSION['vraag3_antwoorden'];
$answer4 = $_SESSION['vraag4_antwoorden'];
$answer5 = $_SESSION['vraag5_antwoorden'];
$answer6 = $_SESSION['vraag6_antwoorden'];
$totalCorrect = 0;
if ($answer1 == "A") { $totalCorrect += 3;}
if ($answer2 == "C") { $totalCorrect += 3;}
if ($answer3 == "C") { $totalCorrect += 3;}
if ($answer4 == "C") { $totalCorrect += 3;}
if ($answer5 == "B") { $totalCorrect += 3;}
if ($answer6 == "C") { $totalCorrect += 3;}
echo $_SESSION['totalcorrect'] = $totalCorrect;
session_destroy();
?>
Gewijzigd op 24/09/2012 09:46:38 door Sebas V
Daarnaaast... je reset de waarde van $totalCorrect iedere keer naar 0 en de manier van optellen door 3x ++ te doen is natuurlijk niet goed.
Maar laat eerst maar eens zien hoe je de sessie waardes hebt ingeregeld, daarna kunnen we je verder helpen.
Gewijzigd op 24/09/2012 09:08:12 door Ozzie PHP
if ($answer1 == "A") { $totalCorrect += 3;}
$_SESSION['totalcorrect'] = $totalCorrect;
Regel 1 t/m 6 - Variabele kopiëren we niet, dit kost geheugen. Gebruik gewoon de post variabele in het script.
Regel 10 t/m 15 - I.p.v. 3 keer ++ is het natuurlijk veel beter 1 keer += 3 te gebruiken... Tevens is het verstandiger om deze if statements op meerdere regels te plaatsen, veel meer leesbaar.
Regel 17 - Variabelen zijn geen stukjes tekst dus geen string dus horen niet binnen quotes.
De optel functie werkt alleen nog niet, bij het invullen van alle goede antwoorden zie ik een 3 verschijnen, terwijl dit 18 moet zijn (6 vragen x 3 punten)
quiz.php (sessions op de quiz pagina)
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
session_start();
$_SESSION["vraag1_antwoorden"] = $_POST["vraag1_antwoorden"];
$_SESSION["vraag2_antwoorden"] = $_POST["vraag2_antwoorden"];
$_SESSION["vraag3_antwoorden"] = $_POST["vraag3_antwoorden"];
$_SESSION["vraag4_antwoorden"] = $_POST["vraag4_antwoorden"];
$_SESSION["vraag5_antwoorden"] = $_POST["vraag5_antwoorden"];
$_SESSION["vraag6_antwoorden"] = $_POST["vraag6_antwoorden"];
?>
session_start();
$_SESSION["vraag1_antwoorden"] = $_POST["vraag1_antwoorden"];
$_SESSION["vraag2_antwoorden"] = $_POST["vraag2_antwoorden"];
$_SESSION["vraag3_antwoorden"] = $_POST["vraag3_antwoorden"];
$_SESSION["vraag4_antwoorden"] = $_POST["vraag4_antwoorden"];
$_SESSION["vraag5_antwoorden"] = $_POST["vraag5_antwoorden"];
$_SESSION["vraag6_antwoorden"] = $_POST["vraag6_antwoorden"];
?>
result.php (score uitslag)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
session_start();
$answer1 = $_SESSION['vraag1_antwoorden'];
$answer2 = $_SESSION['vraag2_antwoorden'];
$answer3 = $_SESSION['vraag3_antwoorden'];
$answer4 = $_SESSION['vraag4_antwoorden'];
$answer5 = $_SESSION['vraag5_antwoorden'];
$answer6 = $_SESSION['vraag6_antwoorden'];
$totalCorrect = 0;
if ($answer1 == "A") { $totalCorrect += 3;}
if ($answer2 == "C") { $totalCorrect += 3;}
if ($answer3 == "C") { $totalCorrect += 3;}
if ($answer4 == "C") { $totalCorrect += 3;}
if ($answer5 == "B") { $totalCorrect += 3;}
if ($answer6 == "C") { $totalCorrect += 3;}
echo $_SESSION['totalcorrect'] = $totalCorrect;
session_destroy();
?>
session_start();
$answer1 = $_SESSION['vraag1_antwoorden'];
$answer2 = $_SESSION['vraag2_antwoorden'];
$answer3 = $_SESSION['vraag3_antwoorden'];
$answer4 = $_SESSION['vraag4_antwoorden'];
$answer5 = $_SESSION['vraag5_antwoorden'];
$answer6 = $_SESSION['vraag6_antwoorden'];
$totalCorrect = 0;
if ($answer1 == "A") { $totalCorrect += 3;}
if ($answer2 == "C") { $totalCorrect += 3;}
if ($answer3 == "C") { $totalCorrect += 3;}
if ($answer4 == "C") { $totalCorrect += 3;}
if ($answer5 == "B") { $totalCorrect += 3;}
if ($answer6 == "C") { $totalCorrect += 3;}
echo $_SESSION['totalcorrect'] = $totalCorrect;
session_destroy();
?>
Gewijzigd op 24/09/2012 09:44:49 door Sebas V
Tevens begrijp je ook niet echt wat sessies zijn, je slaat de POST values op in de sessies array, dan moet je niet in het bestand daarop de POST array willen uitlezen, maar de sessies array. Tevens mis ik overal session_start.
Lees maar even dit door: http://www.phphulp.nl/php/forum/topic/session-leren-gebruiken/86682/#621244
en misschien ook even dit: http://phptuts.nl/view/39/
Echter, dit de optel functie werkt hierbij nog niet. Waar gaat dit fout?
Volg eens een basis tutorial en loop je code stap voor stap na.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$answer1 = $_SESSION['vraag1_antwoorden'];
$answer2 = $_SESSION['vraag2_antwoorden'];
$answer3 = $_SESSION['vraag3_antwoorden'];
$answer4 = $_SESSION['vraag4_antwoorden'];
$answer5 = $_SESSION['vraag5_antwoorden'];
$answer6 = $_SESSION['vraag6_antwoorden'];
$totalCorrect = $_SESSION['totalcorrect'];
if ($answer1 == "C") { $totalCorrect += 3;}
if ($answer2 == "C") { $totalCorrect += 3;}
if ($answer3 == "B") { $totalCorrect += 3;}
if ($answer4 == "A") { $totalCorrect += 3;}
if ($answer5 == "C") { $totalCorrect += 3;}
if ($answer6 == "C") { $totalCorrect += 3;}
echo $totalCorrect;
?>
$answer1 = $_SESSION['vraag1_antwoorden'];
$answer2 = $_SESSION['vraag2_antwoorden'];
$answer3 = $_SESSION['vraag3_antwoorden'];
$answer4 = $_SESSION['vraag4_antwoorden'];
$answer5 = $_SESSION['vraag5_antwoorden'];
$answer6 = $_SESSION['vraag6_antwoorden'];
$totalCorrect = $_SESSION['totalcorrect'];
if ($answer1 == "C") { $totalCorrect += 3;}
if ($answer2 == "C") { $totalCorrect += 3;}
if ($answer3 == "B") { $totalCorrect += 3;}
if ($answer4 == "A") { $totalCorrect += 3;}
if ($answer5 == "C") { $totalCorrect += 3;}
if ($answer6 == "C") { $totalCorrect += 3;}
echo $totalCorrect;
?>
Gewijzigd op 24/09/2012 10:22:25 door Sebas V
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
function calculateScore() {
$answers = array('1' => 'C', '2' => 'C', '3' => 'B', '4' => 'A', '5' => 'C', '6' => 'C');
foreach ($answers as $number => $answer) {
if ($_SESSION['vraag' . $number . '_antwoorden'] == $answer) {
$_SESSION['totalcorrect'] += 3;
}
}
}
calculateScore();
echo $_SESSION['totalcorrect'];
?>
function calculateScore() {
$answers = array('1' => 'C', '2' => 'C', '3' => 'B', '4' => 'A', '5' => 'C', '6' => 'C');
foreach ($answers as $number => $answer) {
if ($_SESSION['vraag' . $number . '_antwoorden'] == $answer) {
$_SESSION['totalcorrect'] += 3;
}
}
}
calculateScore();
echo $_SESSION['totalcorrect'];
?>
Als al je vragen op 1 pagina staan dan hoef je overigens helemaal niet met sessies te werken.