Ozzie PHP
24-09-2012 09:04
gewijzigd op 24-09-2012 09:08
Ten eerst zie ik in jouw code helemaal niks staan wat met sessies te maken heeft. Post aub even de code waarin de sessie-waarden worden geset.
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.
Link gekopieerd
?
Onbekende gebruiker
24-09-2012 09:10
Ik zie hier geen sessions in maar goed.
if ($answer1 == "A") { $totalCorrect += 3;}
$_SESSION['totalcorrect'] = $totalCorrect;
Link gekopieerd
Bijna Elke regel in je code is fout:
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.
Link gekopieerd
S
Sebas V
24-09-2012 09:35
gewijzigd op 24-09-2012 09:44
Aan de hand van de reactie van Stef hanteer ik de volgende code nu.
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)
<?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"];
?>
result.php (score uitslag)
<?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();
?>
Link gekopieerd
Voordat je zomaar iemands zijn code knip/plakt moet je wel weten wat het betekend, dat doe jij niet (als je naar regel 17 van result.php kijkt bijv.).
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 [php]session_start[/php].
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/
Link gekopieerd
Hee Wouter, je bent me voor, excuus, bovenstaand voorbeeld is wat ik hanteer, ik had nog wat oude data onder mijn ctrl c staan.
Echter, dit de optel functie werkt hierbij nog niet. Waar gaat dit fout?
Link gekopieerd
Volg eens een basis tutorial en loop je code stap voor stap na.
Link gekopieerd
S
Sebas V
24-09-2012 10:22
gewijzigd op 24-09-2012 10:22
Gefixed, bedankt voor jullie snelle reply's :)
<?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;
?>
Link gekopieerd
<?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'];
?>
Als al je vragen op 1 pagina staan dan hoef je overigens helemaal niet met sessies te werken.
Link gekopieerd