$totalCorrect++ werkt niet met $_SESSION

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sebas V

Sebas V

24/09/2012 08:58:37
Quote Anchor link
Goedemorgen,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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"];
?>



result.php (score uitslag)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
?>
Gewijzigd op 24/09/2012 09:46:38 door Sebas V
 
PHP hulp

PHP hulp

10/12/2022 00:13:24
 
Ozzie PHP

Ozzie PHP

24/09/2012 09:04:03
Quote Anchor link
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.
Gewijzigd op 24/09/2012 09:08:12 door Ozzie PHP
 

24/09/2012 09:10:21
Quote Anchor link
Ik zie hier geen sessions in maar goed.

if ($answer1 == "A") { $totalCorrect += 3;}

$_SESSION['totalcorrect'] = $totalCorrect;
 
Wouter J

Wouter J

24/09/2012 09:12:42
Quote Anchor link
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.
 
Sebas V

Sebas V

24/09/2012 09:35:21
Quote Anchor link
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)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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"];
?>



result.php (score uitslag)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
?>
Gewijzigd op 24/09/2012 09:44:49 door Sebas V
 
Wouter J

Wouter J

24/09/2012 09:38:30
Quote Anchor link
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 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/
 
Sebas V

Sebas V

24/09/2012 09:42:05
Quote Anchor link
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?
 
Ozzie PHP

Ozzie PHP

24/09/2012 09:56:26
Quote Anchor link
Volg eens een basis tutorial en loop je code stap voor stap na.
 
Sebas V

Sebas V

24/09/2012 10:22:09
Quote Anchor link
Gefixed, bedankt voor jullie snelle reply's :)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
                                    
?>
Gewijzigd op 24/09/2012 10:22:25 door Sebas V
 
Ozzie PHP

Ozzie PHP

24/09/2012 10:50:59
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'];
                                    
?>


Als al je vragen op 1 pagina staan dan hoef je overigens helemaal niet met sessies te werken.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.