Script checken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Niels Veer

Niels Veer

20/12/2011 15:51:49
Quote Anchor link
Hallo allemaal,

Ik heb een quiz gemaakt in php, maar ik heb begrijpen in een ander toppic en op een ander form dat ik er nog al een zooitje van heb gemaakt.
Zouden jullie misschien mijn script willen bekijken en laten weten wat er mis is en hoe ik dit zou kunnen verbeteren?

Dit is het script:
<html>
<head>
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
<title>quiz</title>
<style type="text/css">
body {
background: #000000;
font-size: 13px;
font-family: Arial;
color: #939393;
text-align: left;
}

.titel {
color: #76aa00;
font-size: 25px;
}

.form {
margin: 5;
}
</style>
</head>
<body>
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
ini_set('display_errors', 0); // 0 = uit, 1 = aan
error_reporting(E_ALL);
    //  Maak een verbinding met de database
    
    $aErrors = array();

    include('mysqlgegevens.php');
    
    //  Controleer of het gelukt is
    if ( $rLink === false ) {
      $aErrors[] = 'De database is onbereikbaar. Probeer het later opnieuw.';
    }

    else {
      //  Selecteer je database
    $bSelected = mysql_select_db( 'plantensite', $rLink );
      //  Controleer of het gelukt is
      if ( $bSelected === false ) {
        $aErrors[] = 'De database is niet geselecteerd. Probeer het later opnieuw.';
      }

      else {
        //  Construeer een opdracht voor de database
        $sQuery = "SELECT       id
                   ,            vraag
                   ,            antwoordA
                   ,            antwoordB
                   ,            antwoordC
                   ,            goede_antwoord
                   ,            afbeelding
                   ,            afbeelding_thumb
                   FROM         quiz
                   ORDER BY     id"
;
        //  Stuur de opdracht op
        $rResult = mysql_query( $sQuery, $rLink );
        //  Controleer of het gelukt is
        if ( $rResult === false ) {
          $aErrors[] = 'Het is niet gelukt de nieuwsberichten op te halen.';
        }

        elseif ( mysql_num_rows($rResult) == 0 ) {
          $aErrors[] = 'Er zijn geen gegevens!';
        }
      }
    }

    if ( count($aErrors) > 0 ) {
      echo '<p class="error">';
      foreach ( $aErrors as $sError ) {
        print $sError . '<br />';
      }

      echo '</p>';
    }

    //  Geen fouten? Dan maken we een lijst!
    else {
    session_start();
    session_destroy();
       switch($_GET['vraag']) {
    case
begin:
       echo '
       <p class="titel">Plantenquiz moeilijk</p>
       Welkom bij de plantenquiz,<br><br>
       Deze quiz is wat moeilijker dan de andere quiz. U kunt op de foto klikken om deze in het groot te zien.<br>
       Alle antwoorden zijn te vinden op deze site. Vals spelen is mogelijk maar niet de bedoeling.<br><br>
       Druk op de knop "Start de quiz" om de quiz te starten<br><br>'
;
    setcookie('score');
    setcookie('vraagnummer');?>

<input type="button" value="Start de quiz" onclick="location.href = '?vraag=1'" />
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
25
<?php
    }
    session_start();
    if ( $_SERVER['REQUEST_METHOD'] == 'POST') {
    if($_POST) {
       while ( $aBericht = mysql_fetch_assoc( $rResult ) ) {
        //  We moeten vanwege de speciale tekens in de titel htmlspecialchars() gebruiken
        //  Dit zorgt ervoor dat bijvoorbeeld < en " onschadelijk worden gemaakt

        $paginanummer= ''.htmlspecialchars($aBericht['id']).'';
        switch($_GET['vraag']) {
        case
$paginanummer:    
        echo '
        <form method="post" action="" name="vraag" id="quizvraag">'
;
        echo '<p>
        <a href="afbeeldingen/'
. htmlspecialchars( $aBericht['afbeelding'] ) . '" rel="lightbox"><img src="afbeeldingen/' . htmlspecialchars( $aBericht['afbeelding_thumb'] ) . '"></a><br><br>
        '
.htmlspecialchars($aBericht['vraag']).'
        </p>
        <p>'
;
        echo 'A.<input type="submit" disabled="disabled" name="a" class="form" value="'.htmlspecialchars($aBericht['antwoordA']).'" />'; if(isset($_POST['a']) && $aBericht['goede_antwoord'] != 'A') { echo '<img src="images/kruisje_rood.png">'; } if($aBericht['goede_antwoord'] == 'A') { echo '<img src="images/vinkje_groen.png">'; } if(isset($_POST['a']) && $aBericht['goede_antwoord'] == 'A') { $_COOKIE['score']++; setcookie('score', $_COOKIE['score']); } echo '<br>';
        echo 'B.<input type="submit" disabled="disabled" name="b" class="form" value="'.htmlspecialchars($aBericht['antwoordB']).'" />'; if(isset($_POST['b']) && $aBericht['goede_antwoord'] != 'B') { echo '<img src="images/kruisje_rood.png">'; } if($aBericht['goede_antwoord'] == 'B') { echo '<img src="images/vinkje_groen.png">'; } if(isset($_POST['b']) && $aBericht['goede_antwoord'] == 'B') { $_COOKIE['score']++; setcookie('score', $_COOKIE['score']); } echo '<br>';
        echo 'C.<input type="submit" disabled="disabled" name="c" class="form" value="'.htmlspecialchars($aBericht['antwoordC']).'" />'; if(isset($_POST['c']) && $aBericht['goede_antwoord'] != 'C') { echo '<img src="images/kruisje_rood.png">'; } if($aBericht['goede_antwoord'] == 'C') { echo '<img src="images/vinkje_groen.png">'; } if(isset($_POST['c']) && $aBericht['goede_antwoord'] == 'C') { $_COOKIE['score']++; setcookie('score', $_COOKIE['score']); } echo '<br>';
        echo '</p>
        <input type="submit" name="volgendevraag" value="Volgende vraag" />
        </form>
        '
;?>

Je hebt momenteel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_COOKIE['score']; ?>
punt(en)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo '<br><br>';?>

Dit is vraag
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_COOKIE['vraagnummer']; ?>
van de 20
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
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
        if(!empty($_SESSION['vraag'][$paginanummer])) {
            header("Location: ?vraag=" . mt_rand(1, 20));
            exit();
        }

        if($_POST['volgendevraag'])
        {

            $_COOKIE['vraagnummer']++; setcookie('vraagnummer', $_COOKIE['vraagnummer']);
            $_SESSION['vraag'][$paginanummer] = 'beantwoord';
            header("Location: ?vraag=" . (intval($paginanummer)+1));
            exit();
        }        
        }
        }
        }
        }
else {
        while ( $aBericht = mysql_fetch_assoc( $rResult ) ) {
        //  We moeten vanwege de speciale tekens in de titel htmlspecialchars() gebruiken
        //  Dit zorgt ervoor dat bijvoorbeeld < en " onschadelijk worden gemaakt

        $paginanummer= ''.htmlspecialchars($aBericht['id']).'';
        switch($_GET['vraag']) {
        case
$paginanummer:
        echo '
        <form method="post" action="" name="vraag" id="quizvraag">
        <p>'
;
        if ($aBericht['afbeelding'] != '') {
            echo '<a href="afbeeldingen/' . htmlspecialchars( $aBericht['afbeelding'] ) . '" rel="lightbox"><img src="afbeeldingen/' . htmlspecialchars( $aBericht['afbeelding_thumb'] ) . '"></a><br><br>';
        }
        
        echo '
        '
.htmlspecialchars($aBericht['vraag']).'
        </p>
        <p>
        A.<input type="submit" name="a" class="form" value="'
.htmlspecialchars($aBericht['antwoordA']).'" /><br>
        B.<input type="submit" name="b" class="form" value="'
.htmlspecialchars($aBericht['antwoordB']).'" /><br>
        C.<input type="submit" name="c" class="form" value="'
.htmlspecialchars($aBericht['antwoordC']).'" /><br>
        </p>
        </form>'
;?>

Je hebt momenteel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_COOKIE['score']; ?>
punt(en)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo '<br><br>';?>

Dit is vraag
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_COOKIE['vraagnummer']; ?>
van de 20
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
        }
      }
    }
  }

  switch($_GET['vraag']) {
  case
21:
  echo 'U bent nu klaar met de quiz.<br><br>'; ?>

U hebt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_COOKIE['score']; ?>
punt(en) gehaald.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php echo '<br><br>';
  if($_COOKIE['score'] <= '0')
  {

  echo '<img src="images/balkje_groen.png" width="0" height="20"><img src="images/balkje_rood.png" width="200" height="20"> 0% goed<br><br>';
  }

  if($_COOKIE['score'] == '1')
  {

  echo '<img src="images/balkje_groen.png" width="10" height="20"><img src="images/balkje_rood.png" width="190" height="20"> 5% goed<br><br>';
  }

  if($_COOKIE['score'] == '2')
  {

  echo '<img src="images/balkje_groen.png" width="20" height="20"><img src="images/balkje_rood.png" width="180" height="20"> 10% goed<br><br>';
  }

  if($_COOKIE['score'] == '3')
  {

  echo '<img src="images/balkje_groen.png" width="30" height="20"><img src="images/balkje_rood.png" width="170" height="20"> 15% goed<br><br>';
  }

  if($_COOKIE['score'] == '4')
  {

  echo '<img src="images/balkje_groen.png" width="40" height="20"><img src="images/balkje_rood.png" width="160" height="20"> 20% goed<br><br>';
  }

  if($_COOKIE['score'] == '5')
  {

  echo '<img src="images/balkje_groen.png" width="50" height="20"><img src="images/balkje_rood.png" width="150" height="20"> 25% goed<br><br>';
  }

  if($_COOKIE['score'] == '6')
  {

  echo '<img src="images/balkje_groen.png" width="60" height="20"><img src="images/balkje_rood.png" width="140" height="20"> 30% goed<br><br>';
  }

  if($_COOKIE['score'] == '7')
  {

  echo '<img src="images/balkje_groen.png" width="70" height="20"><img src="images/balkje_rood.png" width="130" height="20"> 35% goed<br><br>';
  }

  if($_COOKIE['score'] == '8')
  {

  echo '<img src="images/balkje_groen.png" width="80" height="20"><img src="images/balkje_rood.png" width="120" height="20"> 40% goed<br><br>';
  }

  if($_COOKIE['score'] == '9')
  {

  echo '<img src="images/balkje_groen.png" width="90" height="20"><img src="images/balkje_rood.png" width="110" height="20"> 45% goed<br><br>';
  }

  if($_COOKIE['score'] == '10')
  {

  echo '<img src="images/balkje_groen.png" width="100" height="20"><img src="images/balkje_rood.png" width="100" height="20"> 50% goed<br><br>';
  }

  if($_COOKIE['score'] == '11')
  {

  echo '<img src="images/balkje_groen.png" width="110" height="20"><img src="images/balkje_rood.png" width="90" height="20"> 55% goed<br><br>';
  }

  if($_COOKIE['score'] == '12')
  {

  echo '<img src="images/balkje_groen.png" width="120" height="20"><img src="images/balkje_rood.png" width="80" height="20"> 60% goed<br><br>';
  }

  if($_COOKIE['score'] == '13')
  {

  echo '<img src="images/balkje_groen.png" width="130" height="20"><img src="images/balkje_rood.png" width="70" height="20"> 65% goed<br><br>';
  }

  if($_COOKIE['score'] == '14')
  {

  echo '<img src="images/balkje_groen.png" width="140" height="20"><img src="images/balkje_rood.png" width="60" height="20"> 70% goed<br><br>';
  }

  if($_COOKIE['score'] == '15')
  {

  echo '<img src="images/balkje_groen.png" width="150" height="20"><img src="images/balkje_rood.png" width="50" height="20"> 75% goed<br><br>';
  }

  if($_COOKIE['score'] == '16')
  {

  echo '<img src="images/balkje_groen.png" width="160" height="20"><img src="images/balkje_rood.png" width="40" height="20"> 80% goed<br><br>';
  }

  if($_COOKIE['score'] == '17')
  {

  echo '<img src="images/balkje_groen.png" width="170" height="20"><img src="images/balkje_rood.png" width="30" height="20"> 85% goed<br><br>';
  }

  if($_COOKIE['score'] == '18')
  {

  echo '<img src="images/balkje_groen.png" width="180" height="20"><img src="images/balkje_rood.png" width="20" height="20"> 90% goed<br><br>';
  }

  if($_COOKIE['score'] == '19')
  {

  echo '<img src="images/balkje_groen.png" width="190" height="20"><img src="images/balkje_rood.png" width="10" height="20"> 95% goed<br><br>';
  }

  if($_COOKIE['score'] == '20')
  {

  echo '<img src="images/balkje_groen.png" width="200" height="20"><img src="images/balkje_rood.png" width="0" height="20"> 100% goed<br><br>';
  }

  if($_COOKIE['score'] >= '15')
  {

  echo 'U kunt in de scorelijst komen! (Als u dit niet wilt hoeft u nergens op te klikken)<br><br>
  <a href="quiz_scorelijst_invoer.php"><input type="button" value="Ja, ik wil in de scorelijst komen"></a><br><br><br>'
;
  }
else {
  echo 'U komt helaas niet in aanmerking voor de scorelijst<br><br>';
  }

  echo '<a href="?vraag=begin"><input type="button" value="Speel de quiz opnieuw"></a>';
  }

  ?>

</body>
</html>

Alvast heel erg bedankt!

n9iels
 
PHP hulp

PHP hulp

28/03/2024 14:17:56
 
Erwin H

Erwin H

20/12/2011 15:58:37
Quote Anchor link
Het eerste wat me opvalt is dat je een switch statement gebruikt waar het helemaal niet nodig is (en waar ik me ook afvraag waar het afsluitende haakje is):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
switch($_GET['vraag']) {
  case
21:
  echo 'U bent nu klaar met de quiz.<br><br>'; ?>

?>


Maar waar een switch statement nu juist wel erg handig is gebruik je een oneindige rij if statements
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if($_COOKIE['score'] <= '0')
  {

  echo '<img src="images/balkje_groen.png" width="0" height="20"><img src="images/balkje_rood.png" width="200" height="20"> 0% goed<br><br>';
  }

?>


Het idee van een switch statement is juist dat je op een overzichtelijke wijze een heleboel opties kan evalueren. Op het moment dat je dus 3 of meer if statements achter elkaar hebt (normaal gesproken in een if..elseif..else structuur die je ook al niet hebt) zou je bij jezelf moeten gaan afvragen of een switch niet handiger is. Maar waar je maar een if hebt staan is een switch totaal overbodig.

Overigens zie ik nu meerdere van die erg vreemde switch statements staan, waarbij het afsluitende haakje telkens ver te zoeken is. Iets doen aan je inspringen zou dus ook al erg helpen.
Gewijzigd op 20/12/2011 16:00:43 door Erwin H
 
- Mark -

- Mark -

20/12/2011 16:17:29
Quote Anchor link
Er is helemaal geen switch nogig om de score weer te geven. Je kunt die hele berg met ifjes van $_COOKIE['score'] <= '0' t'm $_COOKIE['score'] == '20' vervangen door onderstaande.

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

    # De breedte van de groene balk bepalen.
    $width_green = $_COOKIE['score'] * 10;

    # De breedte van de rode balk bepalen.
    $width_red = 200 - ($_COOKIE['score'] * 10);
    
    # Het percentage dat goed is bepalen.
    $percentage = $_COOKIE['score'] * 5;

    # Het behaalde resultaat weergeven.
    echo '<img src="images/balkje_groen.png" width="'.$width_green.'" height="20"><img src="images/balkje_rood.png" width="'.$width_red.'" height="20"> '.$percentage.'% goed<br><br>';        

?>


Ik zie session_start tussen de html staan dat zou dus nooit moeten werken.
En waar slaat het volgende op?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

    session_start();
    session_destroy();

?>
Gewijzigd op 20/12/2011 16:27:31 door - Mark -
 
Niels Veer

Niels Veer

20/12/2011 16:56:56
Quote Anchor link
Als eerste bedankt voor de reacties!

Het idee van de session_start() en daarna direct session_destroy() is dat als de gene de quiz opnieuw speelt de gegevens weer 0 moeten zijn.

En laten we ook maar zeggen dat wiskunde niet mijn sterkste kant is.
Ik h had er namelijk nog nooit over gedacht dat ik vrij simpel de score keer 10 en 5 kon doen.

Ik zal de dingen die jullie hebben aangewezen verbeteren en laten weten/zien wat ik heb gemaakt.

Toevoeging op 20/12/2011 17:41:19:

Als ik de error reporting wat hoger zet krijg ik deze melding:
Notice: Use of undefined constant begin - assumed 'begin' in C:\Domains\plantennamen.sohosted.com\wwwroot\quiz_plantennamen\quiz.php on line 84

Op 84 staat dit:
83 switch($_GET['vraag']) {
84i/i] case begin:

Wat moet ik dan trouwens in plaats van die switch doen die Mark aanwijst?
Gewijzigd op 20/12/2011 16:59:39 door Niels Veer
 
- Mark -

- Mark -

20/12/2011 19:10:53
Quote Anchor link
De switch waar ik het over had was een reactie op Erwin zijn bericht. Die wilde van al die ifjes die je had voor de score een switch maken maar dat is nergens voor nodig "In dit geval dan, voor de rest klopt zijn commentaar".

Ik zou zeggen begin eerst eens met het opruimen van je script. Begin onder andere eens met het wat beter scheiden van je script. Je hebt nu alles door elkaar staan. HTML en PHP. Er mag best php tussen de HTML staan dat is geen probleem maar het is stukken netter en overzichtelijker als het PHP boven je HTML staat. Dan krijg je ook geen foutmeldingen van session_start() en consorten. Deze functie vindt het namelijk niet zo leuk als er output naar de browser wordt gestuurd voordat je ze aanroept. En probeer wat meer en consistent in te springen. Ik zie nog stukken met 3 keer een } onder elkaar. Dit maakt het er niet overzichtelijker op.

Als we het toch over het opruimen van je script hebben. Waarom gebruik je zowel cookies als sessions? Je kunt net zo goed 1 van de 2 kiezen. Je weet het verschil tussen een cookie en een session neem ik aan?

Om een antwoord op je laatste vraag te geven. Er moeten quotes om begin heen want het is een string.

De switch waar jij denkt dat ik naar verwijs is de andere switch waar Erwin het over had. Je hebt maar een paar opties dus die kan je net zo goed in een if else struktuur.
 
Niels Veer

Niels Veer

21/12/2011 14:49:46
Quote Anchor link
Oké, ik heb wat meer ingesprongen met tabs en de html netjes boven elkaar gezet.
Ik heb nu dit:

<html>
<head>
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
<title>quiz</title>
<style type="text/css">
body {
background: #000000;
font-size: 13px;
font-family: Arial;
color: #939393;
text-align: left;
}

.titel {
color: #76aa00;
font-size: 25px;
}

.form {
margin: 5;
}
</style>
</head>
<body>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php switch($_GET['vraag']) {
case
'begin': ?>

<p class="titel">Plantenquiz moeilijk</p>
Welkom bij de plantenquiz,<br><br>
Deze quiz is wat moeilijker dan de andere quiz. U kunt op de foto klikken om deze in het groot te zien.<br>
Alle antwoorden zijn te vinden op deze site. Vals spelen is mogelijk maar niet de bedoeling.<br><br>
Druk op de knop "Start de quiz" om de quiz te starten<br><br>
<input type="button" value="Start de quiz" onclick="location.href = '?vraag=1'" />

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
}
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
    //  Maak een verbinding met de database
    
    $aErrors = array();

    include('mysqlgegevens.php');
    
    //  Controleer of het gelukt is
    if ( $rLink === false ) {
      $aErrors[] = 'De database is onbereikbaar. Probeer het later opnieuw.';
    }

    else {
      //  Selecteer je database
    $bSelected = mysql_select_db( 'plantensite', $rLink );
      //  Controleer of het gelukt is
      if ( $bSelected === false ) {
        $aErrors[] = 'De database is niet geselecteerd. Probeer het later opnieuw.';
      }

      else {
        //  Construeer een opdracht voor de database
        $sQuery = "SELECT       id
                   ,            vraag
                   ,            antwoordA
                   ,            antwoordB
                   ,            antwoordC
                   ,            goede_antwoord
                   ,            afbeelding
                   ,            afbeelding_thumb
                   FROM         quiz
                   ORDER BY     id"
;
        //  Stuur de opdracht op
        $rResult = mysql_query( $sQuery, $rLink );
        //  Controleer of het gelukt is
        if ( $rResult === false ) {
          $aErrors[] = 'Het is niet gelukt de nieuwsberichten op te halen.';
        }

        elseif ( mysql_num_rows($rResult) == 0 ) {
          $aErrors[] = 'Er zijn geen gegevens!';
        }
      }
    }

    if ( count($aErrors) > 0 ) {
      echo '<p class="error">';
      foreach ( $aErrors as $sError ) {
        print $sError . '<br />';
      }

      echo '</p>';
    }

    //  Geen fouten? Dan maken we een lijst!
    else {
        session_start();
        session_destroy();
        session_start();
        setcookie('score');
        setcookie('vraagnummer');
    if ( $_SERVER['REQUEST_METHOD'] == 'POST') {
        if($_POST) {
               while ( $aBericht = mysql_fetch_assoc( $rResult ) ) {
            //  We moeten vanwege de speciale tekens in de titel htmlspecialchars() gebruiken
            //  Dit zorgt ervoor dat bijvoorbeeld < en " onschadelijk worden gemaakt

                $paginanummer= ''.htmlspecialchars($aBericht['id']).'';
                switch($_GET['vraag']) {
                case
$paginanummer:    
                    echo '
                    <form method="post" action="" name="vraag" id="quizvraag">'
;
                    echo '<p>
                    <a href="afbeeldingen/'
. htmlspecialchars( $aBericht['afbeelding'] ) . '" rel="lightbox"><img src="afbeeldingen/' . htmlspecialchars( $aBericht['afbeelding_thumb'] ) . '"></a><br><br>
                    '
.htmlspecialchars($aBericht['vraag']).'
                    </p>
                    <p>'
;
                    echo 'A.<input type="submit" disabled="disabled" name="a" class="form" value="'.htmlspecialchars($aBericht['antwoordA']).'" />'; if(isset($_POST['a']) && $aBericht['goede_antwoord'] != 'A') { echo '<img src="images/kruisje_rood.png">'; } if($aBericht['goede_antwoord'] == 'A') { echo '<img src="images/vinkje_groen.png">'; } if(isset($_POST['a']) && $aBericht['goede_antwoord'] == 'A') { $_COOKIE['score']++; setcookie('score', $_COOKIE['score']); } echo '<br>';
                    echo 'B.<input type="submit" disabled="disabled" name="b" class="form" value="'.htmlspecialchars($aBericht['antwoordB']).'" />'; if(isset($_POST['b']) && $aBericht['goede_antwoord'] != 'B') { echo '<img src="images/kruisje_rood.png">'; } if($aBericht['goede_antwoord'] == 'B') { echo '<img src="images/vinkje_groen.png">'; } if(isset($_POST['b']) && $aBericht['goede_antwoord'] == 'B') { $_COOKIE['score']++; setcookie('score', $_COOKIE['score']); } echo '<br>';
                    echo 'C.<input type="submit" disabled="disabled" name="c" class="form" value="'.htmlspecialchars($aBericht['antwoordC']).'" />'; if(isset($_POST['c']) && $aBericht['goede_antwoord'] != 'C') { echo '<img src="images/kruisje_rood.png">'; } if($aBericht['goede_antwoord'] == 'C') { echo '<img src="images/vinkje_groen.png">'; } if(isset($_POST['c']) && $aBericht['goede_antwoord'] == 'C') { $_COOKIE['score']++; setcookie('score', $_COOKIE['score']); } echo '<br>';
                    echo '</p>
                    <input type="submit" name="volgendevraag" value="Volgende vraag" />
                        </form>
                    '
;?>

Je hebt momenteel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_COOKIE['score']; ?>
punt(en)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo '<br><br>';?>

Dit is vraag
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_COOKIE['vraagnummer']; ?>
van de 20
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
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
                    if(!empty($_SESSION['vraag'][$paginanummer])) {
                        header("Location: ?vraag=" . (intval($paginanummer)+1));
                        exit();
                    }

                    if($_POST['volgendevraag'])
                    {

                        $_COOKIE['vraagnummer']++; setcookie('vraagnummer', $_COOKIE['vraagnummer']);
                        $_SESSION['vraag'][$paginanummer] = 'beantwoord';
                        header("Location: ?vraag=" . (intval($paginanummer)+1));
                        exit();
                    }        
                }
            }
        }
    }
else {
        while ( $aBericht = mysql_fetch_assoc( $rResult ) ) {
        //  We moeten vanwege de speciale tekens in de titel htmlspecialchars() gebruiken
        //  Dit zorgt ervoor dat bijvoorbeeld < en " onschadelijk worden gemaakt

            $paginanummer= ''.htmlspecialchars($aBericht['id']).'';
                switch($_GET['vraag']) {
                case
$paginanummer:
                    echo '
                    <form method="post" action="" name="vraag" id="quizvraag">
                    <p>'
;
                    if ($aBericht['afbeelding'] != '') {
                        echo '<a href="afbeeldingen/' . htmlspecialchars( $aBericht['afbeelding'] ) . '" rel="lightbox"><img src="afbeeldingen/' . htmlspecialchars( $aBericht['afbeelding_thumb'] ) . '"></a><br><br>';
                    }
        
                    echo '
                    '
.htmlspecialchars($aBericht['vraag']).'
                    </p>
                    <p>
                    A.<input type="submit" name="a" class="form" value="'
.htmlspecialchars($aBericht['antwoordA']).'" /><br>
                    B.<input type="submit" name="b" class="form" value="'
.htmlspecialchars($aBericht['antwoordB']).'" /><br>
                    C.<input type="submit" name="c" class="form" value="'
.htmlspecialchars($aBericht['antwoordC']).'" /><br>
                    </p>
                    </form>'
;?>

Je hebt momenteel
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_COOKIE['score']; ?>
punt(en)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo '<br><br>';?>

Dit is vraag
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_COOKIE['vraagnummer']; ?>
van de 20
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
                }
              }
        }    
      }

  switch($_GET['vraag']) {
  case
'21':
  echo 'U bent nu klaar met de quiz.<br><br>'; ?>

U hebt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_COOKIE['score']; ?>
punt(en) gehaald.
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
<?php echo '<br><br>';
  # De breedte van de groene balk bepalen.
  $width_green = $_COOKIE['score'] * 10;

  # De breedte van de rode balk bepalen.
  $width_red = 200 - ($_COOKIE['score'] * 10);
    
  # Het percentage dat goed is bepalen.
  $percentage = $_COOKIE['score'] * 5;

  # Het behaalde resultaat weergeven.
  echo '<img src="images/balkje_groen.png" width="'.$width_green.'" height="20"><img src="images/balkje_rood.png" width="'.$width_red.'" height="20"> '.$percentage.'% goed<br><br>';
  
  if($_COOKIE['score'] >= '15')
  {

  echo 'U kunt in de scorelijst komen! (Als u dit niet wilt hoeft u nergens op te klikken)<br><br>
  <a href="quiz_scorelijst_invoer.php"><input type="button" value="Ja, ik wil in de scorelijst komen"></a><br><br><br>'
;
  }
else {
  echo 'U komt helaas niet in aanmerking voor de scorelijst<br><br>';
  }

  echo '<a href="?vraag=begin"><input type="button" value="Speel de quiz opnieuw"></a>';
  }

  ?>

</body>
</html>

Ik zit nu alleen nog met het volgende:
Ik wil graag enkel met sessies gaan werken omdat dat handiger is.
Ik weet dat als je een sessie wilt legen je session_destroy(); gebruikt.
Nu moet de de sessies die ik aanmaak geleegd worden zodra je de quiz opnieuw speelt, want anders het je natuurlijk precies het zelfde aantal punten.
Hoe kan ik dit doen?
Ik had al ontdekt dat dit niet echt werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

        session_start();
        session_destroy();
        session_start();
?>
 
- SanThe -

- SanThe -

21/12/2011 15:55:48
Quote Anchor link
Niels van der Veer op 21/12/2011 14:49:46:
Ik had al ontdekt dat dit niet echt werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

        session_start();
        session_destroy();
        session_start();
?>


Waarom denk je dat? Hiermee vernietig je de oude session en maak je direct een (lege) nieuwe aan.
 
Chris -

Chris -

21/12/2011 19:59:11
Quote Anchor link
$_SESSION = array();
 
Niels Veer

Niels Veer

23/12/2011 07:20:35
Quote Anchor link
Ik ben vast gelopen bij de sessions.
Als ik dit bovenaan het script neer zet dan houd hij de sessie niet bij, want als ik een antwoord nog een keer post wordt deze toch gepost.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

        session_start();
        session_destroy();
        session_start();
?>


Kan iemand met op weg helpen?
 
- SanThe -

- SanThe -

23/12/2011 10:48:02
Quote Anchor link
Zoals ik al zei, het vernietigt de oude session.
 
Niels Veer

Niels Veer

23/12/2011 11:18:11
Quote Anchor link
Dat lukt mij dus niet.
Dit is nu het script:

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<?php
session_start();
session_destroy();
<
html>
<
head>
<
script type="text/javascript" src="js/prototype.js"></script>

<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
<title>quiz</title>
<style type="text/css">
body {
  background: #000000;
  font-size: 13px;
  font-family:  Arial;
  color: #939393;
  text-align: left;
}
    
.titel {
  color: #76aa00;
  font-size: 25px;
}

.form {
  margin: 5;
}
</style>
</head>
<body>

<?php switch($_GET['vraag']) {
case
'begin': ?>

    <p class="titel">Plantenquiz moeilijk</p>
    Welkom bij de plantenquiz,<br><br>
    Deze quiz is wat moeilijker dan de andere quiz. U kunt op de foto klikken om deze in het groot te zien.<br>
    Alle antwoorden zijn te vinden op deze site. Vals spelen is mogelijk maar niet de bedoeling.<br><br>
    Druk op de knop "Start de quiz" om de quiz te starten<br><br>
    <input type="button" value="Start de quiz" onclick="location.href = '?vraag=1'" />
<?php
setcookie('score');
setcookie('vraagnummer');
}

ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
    //  Maak een verbinding met de database
    
    $aErrors = array();

    include('mysqlgegevens.php');
    
    //  Controleer of het gelukt is
    if ( $rLink === false ) {
      $aErrors[] = 'De database is onbereikbaar. Probeer het later opnieuw.';
    }

    else {
      //  Selecteer je database
    $bSelected = mysql_select_db( 'plantensite', $rLink );
      //  Controleer of het gelukt is
      if ( $bSelected === false ) {
        $aErrors[] = 'De database is niet geselecteerd. Probeer het later opnieuw.';
      }

      else {
        //  Construeer een opdracht voor de database
        $sQuery = "SELECT       id
                   ,            vraag
                   ,            antwoordA
                   ,            antwoordB
                   ,            antwoordC
                   ,            goede_antwoord
                   ,            afbeelding
                   ,            afbeelding_thumb
                   FROM         quiz
                   ORDER BY     id"
;
        //  Stuur de opdracht op
        $rResult = mysql_query( $sQuery, $rLink );
        //  Controleer of het gelukt is
        if ( $rResult === false ) {
          $aErrors[] = 'Het is niet gelukt de nieuwsberichten op te halen.';
        }

        elseif ( mysql_num_rows($rResult) == 0 ) {
          $aErrors[] = 'Er zijn geen gegevens!';
        }
      }
    }

    if ( count($aErrors) > 0 ) {
      echo '<p class="error">';
      foreach ( $aErrors as $sError ) {
        print $sError . '<br />';
      }

      echo '</p>';
    }

    //  Geen fouten? Dan maken we een lijst!
    else {
    session_start();
    if ( $_SERVER['REQUEST_METHOD'] == 'POST') {
        if($_POST) {
               while ( $aBericht = mysql_fetch_assoc( $rResult ) ) {
            //  We moeten vanwege de speciale tekens in de titel htmlspecialchars() gebruiken
            //  Dit zorgt ervoor dat bijvoorbeeld < en " onschadelijk worden gemaakt

                $paginanummer= ''.htmlspecialchars($aBericht['id']).'';
                switch($_GET['vraag']) {
                case
$paginanummer:    
                    echo '
                    <form method="post" action="" name="vraag" id="quizvraag">'
;
                    echo '<p>
                    <a href="afbeeldingen/'
. htmlspecialchars( $aBericht['afbeelding'] ) . '" rel="lightbox"><img src="afbeeldingen/' . htmlspecialchars( $aBericht['afbeelding_thumb'] ) . '"></a><br><br>
                    '
.htmlspecialchars($aBericht['vraag']).'
                    </p>
                    <p>'
;
                    echo 'A.<input type="submit" disabled="disabled" name="a" class="form" value="'.htmlspecialchars($aBericht['antwoordA']).'" />'; if(isset($_POST['a']) && $aBericht['goede_antwoord'] != 'A') { echo '<img src="images/kruisje_rood.png">'; } if($aBericht['goede_antwoord'] == 'A') { echo '<img src="images/vinkje_groen.png">'; } if(isset($_POST['a']) && $aBericht['goede_antwoord'] == 'A') { $_COOKIE['score']++; setcookie('score', $_COOKIE['score']); } echo '<br>';
                       echo 'B.<input type="submit" disabled="disabled" name="b" class="form" value="'.htmlspecialchars($aBericht['antwoordB']).'" />'; if(isset($_POST['b']) && $aBericht['goede_antwoord'] != 'B') { echo '<img src="images/kruisje_rood.png">'; } if($aBericht['goede_antwoord'] == 'B') { echo '<img src="images/vinkje_groen.png">'; } if(isset($_POST['b']) && $aBericht['goede_antwoord'] == 'B') { $_COOKIE['score']++; setcookie('score', $_COOKIE['score']); } echo '<br>';
                       echo 'C.<input type="submit" disabled="disabled" name="c" class="form" value="'.htmlspecialchars($aBericht['antwoordC']).'" />'; if(isset($_POST['c']) && $aBericht['goede_antwoord'] != 'C') { echo '<img src="images/kruisje_rood.png">'; } if($aBericht['goede_antwoord'] == 'C') { echo '<img src="images/vinkje_groen.png">'; } if(isset($_POST['c']) && $aBericht['goede_antwoord'] == 'C') { $_COOKIE['score']++; setcookie('score', $_COOKIE['score']); } echo '<br>';
                    echo '</p>
                    <input type="submit" name="volgendevraag" id="volgendevraag" value="Volgende vraag" />
                    </form>
                    '
;?>

                    Je hebt momenteel <?php echo $_COOKIE['score']; ?> punt(en)<?php echo '<br><br>';?>
                    Dit is vraag <?php echo $_COOKIE['vraagnummer']; ?> van de 20 <?php
                    if(!empty($_SESSION['vraag'][$paginanummer])) {
                           header("Location: ?vraag=" . (intval($paginanummer)+1));
                           exit();
                       }

                       if($_POST['volgendevraag'])
                    {

                        $_COOKIE['vraagnummer']++; setcookie('vraagnummer', $_COOKIE['vraagnummer']);
                        $_SESSION['vraag'][$paginanummer] = 'beantwoord';
                        header("Location: ?vraag=" . (intval($paginanummer)+1));
                           exit();
                       }    
                }
            }
        }
    }
else {
        while ( $aBericht = mysql_fetch_assoc( $rResult ) ) {
        //  We moeten vanwege de speciale tekens in de titel htmlspecialchars() gebruiken
        //  Dit zorgt ervoor dat bijvoorbeeld < en " onschadelijk worden gemaakt

            $paginanummer= ''.htmlspecialchars($aBericht['id']).'';
                switch($_GET['vraag']) {
                case
$paginanummer:
                    echo '
                    <form method="post" action="" name="vraag" id="quizvraag">
                    <p>'
;
                    if ($aBericht['afbeelding'] != '') {
                        echo '<a href="afbeeldingen/' . htmlspecialchars( $aBericht['afbeelding'] ) . '" rel="lightbox"><img src="afbeeldingen/' . htmlspecialchars( $aBericht['afbeelding_thumb'] ) . '"></a><br><br>';
                    }
        
                    echo '
                    '
.htmlspecialchars($aBericht['vraag']).'
                    </p>
                    <p>
                    A.<input type="submit" name="a" class="form" value="'
.htmlspecialchars($aBericht['antwoordA']).'" /><br>
                    B.<input type="submit" name="b" class="form" value="'
.htmlspecialchars($aBericht['antwoordB']).'" /><br>
                    C.<input type="submit" name="c" class="form" value="'
.htmlspecialchars($aBericht['antwoordC']).'" /><br>
                    </p>
                    </form>'
;?>

                    Je hebt momenteel <?php echo $_COOKIE['score']; ?> punt(en)<?php echo '<br><br>';?>
                    Dit is vraag <?php echo $_COOKIE['vraagnummer']; ?> van de 20 <?php
                }
              }
        }    
      }

  switch($_GET['vraag']) {
  case
'21':
  echo 'U bent nu klaar met de quiz.<br><br>'; ?>

  U hebt <?php echo $_COOKIE['score']; ?> punt(en) gehaald.<?php echo '<br><br>';
  # De breedte van de groene balk bepalen.
  $width_green = $_COOKIE['score'] * 10;

  # De breedte van de rode balk bepalen.
  $width_red = 200 - ($_COOKIE['score'] * 10);
    
  # Het percentage dat goed is bepalen.
  $percentage = $_COOKIE['score'] * 5;

  # Het behaalde resultaat weergeven.
  echo '<img src="images/balkje_groen.png" width="'.$width_green.'" height="20"><img src="images/balkje_rood.png" width="'.$width_red.'" height="20"> '.$percentage.'% goed<br><br>';
  
  if($_COOKIE['score'] >= '15')
  {

  echo 'U kunt in de scorelijst komen! (Als u dit niet wilt hoeft u nergens op te klikken)<br><br>
  <a href="quiz_scorelijst_invoer.php"><input type="button" value="Ja, ik wil in de scorelijst komen"></a><br><br><br>'
;
  }
else {
  echo 'U komt helaas niet in aanmerking voor de scorelijst<br><br>';
  }

  echo '<a href="?vraag=begin"><input type="button" value="Speel de quiz opnieuw"></a>';
  }

  ?>

  </body>
  </html>
?>
Gewijzigd op 23/12/2011 11:29:35 door Niels Veer
 
Obelix Idefix

Obelix Idefix

23/12/2011 11:20:56
Quote Anchor link
Plaats aub je code tussen code-tags. zo is het niet te lezen/volgen.
Vraag me overigens af of het echt zin heeft om telkens die hele lap code te plaatsen.

Wat wil je bereiken met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
session_start();
session_destroy();
 
Niels Veer

Niels Veer

23/12/2011 11:24:22
Quote Anchor link
Ik wil dat als iemand de quiz opnieuw speelt de oude sessie weg wordt gegooid en een nieuwe wordt aangemaakt. Zo worden de gegevens opnieuw ingesteld.
 
Nick van der heijden

nick van der heijden

23/12/2011 11:29:13
Quote Anchor link
@niels
Als je

session_start();
dan start je de sessie logisch
maar om daarna gelijk een
session_destroy();
neer tezetten werkt niet teminste niet wat jy wilt;)
want enige wat nu gebeurt is dat je session start en je session weer destroy.
Of terwijl je hebt zo niks aan je session
 
Niels Veer

Niels Veer

23/12/2011 11:32:47
Quote Anchor link
Dat had ik ook al begrepen.
Maar hoe zorg ik er dan voor dat als de gebruiker de quiz opnieuw speelt hij niet de zelfde gegevens heeft?
Ik wil de score namelijk ook in sessies opslaan
 
Erwin H

Erwin H

23/12/2011 11:46:06
Quote Anchor link
Kan je dan niet gewoon een "manuele" reset doen van je sessie. Alle gegevens in de sessie worden door jou ergens erin gestopt. Als de speler opnieuw begint kan je die gegevens dus ook weer gewoon terugzetten naar hun begin waardes.

Dus zoiets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
session_start();
if ($new_game){
  $_SESSION["score"] = 0;
  $_SESSION["vraag"] = 1;
  //etc etc
}
?>
 
Obelix Idefix

Obelix Idefix

23/12/2011 11:48:47
Quote Anchor link
Wat is je probleem???

Je kunt toch diverse sessie variabelen aanmaken?!

Als je niet wilt dat de gebruiker dezelfde vragen krijgt, zul je (in een sessie) moeten bijhouden welke vragen al gesteld zijn.

Als je reeds gegeven antwoorden uit een sessie wilt halen, pas je voor die sessie-variabele dat toch aan?
 
Niels Veer

Niels Veer

23/12/2011 11:49:29
Quote Anchor link
Laat maar, ik heb hem al werkend gekregen.
Ik heb nu dit:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<?php
<html>
<
head>
<
script type="text/javascript" src="js/prototype.js"></script>

<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
<title>quiz</title>
<style type="text/css">
body {
  background: #000000;
  font-size: 13px;
  font-family:  Arial;
  color: #939393;
  text-align: left;
}
    
.titel {
  color: #76aa00;
  font-size: 25px;
}

.form {
  margin: 5;
}
</style>
</head>
<body>
<?php switch($_GET['vraag']) {
case
'begin': ?>

    <p class="titel">Plantenquiz moeilijk</p>
    Welkom bij de plantenquiz,<br><br>
    Deze quiz is wat moeilijker dan de andere quiz. U kunt op de foto klikken om deze in het groot te zien.<br>
    Alle antwoorden zijn te vinden op deze site. Voor elk goed antwoord krijgt u n punt.<br><br>
    Druk op de knop "Start de quiz" om de quiz te starten<br><br>
    <input type="button" value="Start de quiz" onclick="location.href = '?vraag=1'" />
<?php
setcookie('score');
setcookie('vraagnummer');
}

ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
    //  Maak een verbinding met de database
    
    $aErrors = array();

    include('mysqlgegevens.php');
    
    //  Controleer of het gelukt is
    if ( $rLink === false ) {
      $aErrors[] = 'De database is onbereikbaar. Probeer het later opnieuw.';
    }

    else {
      //  Selecteer je database
    $bSelected = mysql_select_db( 'plantensite', $rLink );
      //  Controleer of het gelukt is
      if ( $bSelected === false ) {
        $aErrors[] = 'De database is niet geselecteerd. Probeer het later opnieuw.';
      }

      else {
        //  Construeer een opdracht voor de database
        $sQuery = "SELECT       id
                   ,            vraag
                   ,            antwoordA
                   ,            antwoordB
                   ,            antwoordC
                   ,            goede_antwoord
                   ,            afbeelding
                   ,            afbeelding_thumb
                   FROM         quiz
                   ORDER BY     id"
;
        //  Stuur de opdracht op
        $rResult = mysql_query( $sQuery, $rLink );
        //  Controleer of het gelukt is
        if ( $rResult === false ) {
          $aErrors[] = 'Het is niet gelukt de nieuwsberichten op te halen.';
        }

        elseif ( mysql_num_rows($rResult) == 0 ) {
          $aErrors[] = 'Er zijn geen gegevens!';
        }
      }
    }

    if ( count($aErrors) > 0 ) {
      echo '<p class="error">';
      foreach ( $aErrors as $sError ) {
        print $sError . '<br />';
      }

      echo '</p>';
    }

    //  Geen fouten? Dan maken we een lijst!
    else {
    session_start();
    if ( $_SERVER['REQUEST_METHOD'] == 'POST') {
        if($_POST) {
               while ( $aBericht = mysql_fetch_assoc( $rResult ) ) {
            //  We moeten vanwege de speciale tekens in de titel htmlspecialchars() gebruiken
            //  Dit zorgt ervoor dat bijvoorbeeld < en " onschadelijk worden gemaakt

                $paginanummer= ''.htmlspecialchars($aBericht['id']).'';
                switch($_GET['vraag']) {
                case
$paginanummer:    
                    echo '
                    <form method="post" action="" name="vraag" id="quizvraag">'
;
                    echo '<p>
                    <a href="afbeeldingen/'
. htmlspecialchars( $aBericht['afbeelding'] ) . '" rel="lightbox"><img src="afbeeldingen/' . htmlspecialchars( $aBericht['afbeelding_thumb'] ) . '"></a><br><br>
                    '
.htmlspecialchars($aBericht['vraag']).'
                    </p>
                    <p>'
;
                    echo 'A.<input type="submit" disabled="disabled" name="a" class="form" value="'.htmlspecialchars($aBericht['antwoordA']).'" />'; if(!empty($_SESSION['vraag'][$paginanummer])) { header("Location: ?vraag=" . (intval($paginanummer)+1)); exit(); } if(isset($_POST['a']) && $aBericht['goede_antwoord'] != 'A') { echo '<img src="images/kruisje_rood.png">'; } if($aBericht['goede_antwoord'] == 'A') { echo '<img src="images/vinkje_groen.png">'; } if(isset($_POST['a']) && $aBericht['goede_antwoord'] == 'A') { $_COOKIE['score']++; setcookie('score', $_COOKIE['score']); } echo '<br>';
                       echo 'B.<input type="submit" disabled="disabled" name="b" class="form" value="'.htmlspecialchars($aBericht['antwoordB']).'" />'; if(isset($_POST['b']) && $aBericht['goede_antwoord'] != 'B') { echo '<img src="images/kruisje_rood.png">'; } if($aBericht['goede_antwoord'] == 'B') { echo '<img src="images/vinkje_groen.png">'; } if(isset($_POST['b']) && $aBericht['goede_antwoord'] == 'B') { $_COOKIE['score']++; setcookie('score', $_COOKIE['score']); } echo '<br>';
                       echo 'C.<input type="submit" disabled="disabled" name="c" class="form" value="'.htmlspecialchars($aBericht['antwoordC']).'" />'; if(isset($_POST['c']) && $aBericht['goede_antwoord'] != 'C') { echo '<img src="images/kruisje_rood.png">'; } if($aBericht['goede_antwoord'] == 'C') { echo '<img src="images/vinkje_groen.png">'; } if(isset($_POST['c']) && $aBericht['goede_antwoord'] == 'C') { $_COOKIE['score']++; setcookie('score', $_COOKIE['score']); } $_SESSION['vraag'][$paginanummer] = 'beantwoord'; echo '<br>';
                    echo '</p>
                    <input type="submit" name="volgendevraag" id="volgendevraag" value="Volgende vraag" />
                    </form>
                    '
;?>

                    Je hebt momenteel <?php echo $_COOKIE['score']; ?> punt(en)<?php echo '<br><br>';?>
                    Dit is vraag <?php echo $_COOKIE['vraagnummer']; ?> van de 20 <?php
                       if($_POST['volgendevraag'])
                    {

                        $_COOKIE['vraagnummer']++; setcookie('vraagnummer', $_COOKIE['vraagnummer']);
                        $_SESSION['vraag'][$paginanummer] = 'beantwoord';
                        header("Location: ?vraag=" . (intval($paginanummer)+1));
                           exit();
                       }    
                }
            }
        }
    }
else {
        while ( $aBericht = mysql_fetch_assoc( $rResult ) ) {
        //  We moeten vanwege de speciale tekens in de titel htmlspecialchars() gebruiken
        //  Dit zorgt ervoor dat bijvoorbeeld < en " onschadelijk worden gemaakt

            $paginanummer= ''.htmlspecialchars($aBericht['id']).'';
                switch($_GET['vraag']) {
                case
$paginanummer:
                    echo '
                    <form method="post" action="" name="vraag" id="quizvraag">
                    <p>'
;
                    if ($aBericht['afbeelding'] != '') {
                        echo '<a href="afbeeldingen/' . htmlspecialchars( $aBericht['afbeelding'] ) . '" rel="lightbox"><img src="afbeeldingen/' . htmlspecialchars( $aBericht['afbeelding_thumb'] ) . '"></a><br><br>';
                    }
        
                    echo '
                    '
.htmlspecialchars($aBericht['vraag']).'
                    </p>
                    <p>
                    A.<input type="submit" name="a" class="form" value="'
.htmlspecialchars($aBericht['antwoordA']).'" /><br>
                    B.<input type="submit" name="b" class="form" value="'
.htmlspecialchars($aBericht['antwoordB']).'" /><br>
                    C.<input type="submit" name="c" class="form" value="'
.htmlspecialchars($aBericht['antwoordC']).'" /><br>
                    </p>
                    </form>'
;?>

                    Je hebt momenteel <?php echo $_COOKIE['score']; ?> punt(en)<?php echo '<br><br>';?>
                    Dit is vraag <?php echo $_COOKIE['vraagnummer']; ?> van de 20 <?php
                }
              }
        }    
      }

  switch($_GET['vraag']) {
  case
'21':
  echo 'U bent nu klaar met de quiz.<br><br>'; ?>

  U hebt <?php echo $_COOKIE['score']; ?> punt(en) gehaald.<?php echo '<br><br>';
  # De breedte van de groene balk bepalen.
  $width_green = $_COOKIE['score'] * 10;

  # De breedte van de rode balk bepalen.
  $width_red = 200 - ($_COOKIE['score'] * 10);
    
  # Het percentage dat goed is bepalen.
  $percentage = $_COOKIE['score'] * 5;

  # Het behaalde resultaat weergeven.
  echo '<img src="images/balkje_groen.png" width="'.$width_green.'" height="20"><img src="images/balkje_rood.png" width="'.$width_red.'" height="20"> '.$percentage.'% goed<br><br>';
  
  if($_COOKIE['score'] >= '15')
  {

  session_destroy();
  echo 'U kunt in de scorelijst komen! (Als u dit niet wilt hoeft u nergens op te klikken)<br><br>
  <a href="quiz_scorelijst_invoer.php"><input type="button" value="Ja, ik wil in de scorelijst komen"></a><br><br><br>'
;
  }
else {
  session_destroy();
  echo 'U komt helaas niet in aanmerking voor de scorelijst<br><br>';
  }

  echo '<a href="?vraag=begin"><input type="button" value="Speel de quiz opnieuw"></a>';
  }

  ?>

  </body>
  </html>
?>


Zien jullie nog andere verbeter punten?
 
- SanThe -

- SanThe -

23/12/2011 11:58:01
Quote Anchor link
Niels van der Veer op 23/12/2011 11:49:29:
Laat maar, ik heb hem al werkend gekregen.


Lijkt mij stug.
Je hebt al output naar de server vóór session_start(), session_destroy() en setcookie(). Dus die zullen niet goed werken. Die werken als er nog helemaal niks naar de browser is gestuurd.
Gewijzigd op 23/12/2011 11:59:10 door - SanThe -
 
Niels Veer

Niels Veer

23/12/2011 12:15:40
Quote Anchor link
Is het dan wel goed als ik alles bovenaan zet?
Dus de session_start() en de setcookie()

Toevoeging op 23/12/2011 12:35:42:

Erwin H op 23/12/2011 11:46:06:

Dus zoiets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
session_start();
if ($new_game){
  $_SESSION["score"] = 0;
  $_SESSION["vraag"] = 1;
  //etc etc
}
?>


Wat moet er in de variabele $new_game staan dan?
 



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.