PHP Taaltoets array probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

B Klaas

B Klaas

04/10/2010 13:22:26
Quote Anchor link
Voor school moeten we een taaltoetsje maken in PHP met de volgende eisen:
-Controle of antwoord goed of fout is
-Bijhouden hoeveel pogingen zijn gedaan en hoeveel daarvan goed zijn
-Een goed woord mag niet opnieuw worden gevraagd
-Als alle woorden gevraagd zijn of als de gebruiker op stop heeft gedrukt moet er een cijfer worden weergegeven aan de hand van het aantal goede pogingen.

Nou ben ik al een eindje opweg, heb alleen nog niet de laatste eis verwerkt, omdat ik vastliep bij de derde. Ik dacht, als een woord goed is, haal ik deze uit beide arrays, echter werkt dit nog niet goed. Waar ga ik de fout in?

De eerste pagina:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
session_start();
$_SESSION['woord_nl']=array("stoel", "bord", "mes", "vork", "lepel", "bureau");
$_SESSION['woord_en']=array("chair", "plate", "knife", "fork", "spoon", "desk");
$_SESSION['aantal_w']=count($_SESSION['woord_nl']);
$_SESSION['n']=array_rand($_SESSION['woord_nl']);
$_SESSION['vraag']=$_SESSION['woord_nl'][$_SESSION['n']];
$_SESSION['antwoord']=$_SESSION['woord_en'][$_SESSION['n']];
?>


Controle pagina:
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
<?php
session_start();
if (isset($_SESSION['pogingen'])){
    $_SESSION['pogingen']++;
}

else{
    $_SESSION['pogingen']=1;
}

if ($_POST['antwoord']==$_SESSION['antwoord'])
    {

        echo "Het door jou ingevoerde woord is <font color='green'>goed!</font>";
        unset($_SESSION['woord_nl'][$_SESSION['n']]);
        unset($_SESSION['woord_en'][$_SESSION['n']]);
        array_values($_SESSION['woord_nl']);
        array_values($_SESSION['woord_en']);
        if (isset($_SESSION['goede'])){
            $_SESSION['goede']++;
        }

        else{
            $_SESSION['goede']=1;
        }
    }

else
    {
        echo "Het door jou ingevoerde woord is <font color='red'>fout!</font>";
    }

?>


En de pagina die geladen wordt na controle dmv een 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
session_start();
?>

<html>
<head>
<title>Taaltoets</title>
</head>
<body>
<h4>Taaltoets</h4>
<p>Deze toets bevat <?php echo $_SESSION['aantal_w'];?> woorden.</p>
<p>Je hebt <?php echo $_SESSION['pogingen'];?> pogingen gedaan, waarvan <?php echo $_SESSION['goede'];?> goede.</p>
<form method="post" action="controle.php">Vul het Engelse woord in voor <?php echo $_SESSION['vraag'];?>:</br><input type="text" size="15" name="antwoord">
<input type="submit" value="Controleer!" name="controle"></form>
</body>
</html>
 
PHP hulp

PHP hulp

11/01/2025 05:45:22
 

04/10/2010 14:37:17
Quote Anchor link
Je probeert een array te unsetten welke niet bestaat. $_SESSION['n'] is bijvoorbeeld "stoel" geworden. Er bestaat geen $_SESSION['woord_nl']['stoel'], dit zou moeten zijn $_SESSION['woord_nl'][0]. Zoek eens function array_keys. Dan kom je er wel uit!
 
B Klaas

B Klaas

04/10/2010 15:22:01
Quote Anchor link
Die unset() functie heb ik gebruikt om ervoor te zorgen dat een gevraagd woord niet opnieuw gevraagd wordt. Wanneer ik $_SESSION['woord_nl'][0] gebruik, wordt toch de eerste entry (=eerste woord) verwijderd in plaats van het gevraagde woord?
 



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.