Array en switch combinatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Merel Witsenboer

Merel Witsenboer

27/03/2015 15:34:23
Quote Anchor link
Ik heb een script geschreven voor een tot nu toe kleine quiz, met vragen die in een array staan. Ik wil de array door elkaar gooien met shuffle, en vervolgens hier een item uithalen en via een switch een antwoord eraan plakken, echter pakt hij op geen enkele manier een case en krijg ik standaard de foutmelding die ik er in de default bij heb gezet. Ik heb echt geen idee hoe ik dit moet doen, dit is mijn script:

in de head:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$vragen
= array("Van wie was het nummer demons?", "Welke kleur is een banaan?", "Door wie zijn de Harry Potter boeken geschreven?", "Hoe heet deel 2 van The Hobbit?", "Welk dier lijkt het meest op de mens?", "Wie organiseerde de New Year Revolution in Miami, 2014-2015?" );
shuffle($vragen);
$vraag = key($vragen);
$devraag = $vragen[$vraag];
$antwoord = "";
?>


en in de 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
<?php
if (isset($_POST["versturen"]))
{

    switch($vragen)
    {
        case
"0"; $antwoord="imagine dragons"; break;
        case
"1"; $antwoord="geel"; break;
        case
"2"; $antwoord="j.k. rowling"; break;
        case
"3"; break;
        case
"4"; $antwoord="de aap"; break;
        case
"5"; $antwoord="armando christian perez"; break;
        default;
echo "foutmelding"; break;
    }

    $poging = $_POST["poging"];
    if ($poging == $antwoord)
    {

        echo "Goed <br>";
        echo "<a href=\"" . $_SERVER["PHP_SELF"] . "\" >Volgende Vraag</a>";
    }

    else
    {
        echo "Fout <br>";
        echo "Het antwoord was $antwoord <br>";
        echo "<a href=\"" . $_SERVER["PHP_SELF"] . "\" >Volgende Vraag</a>";
    }
}

else
{
    echo "$devraag";
    echo "<form name = \"quiz\" method = \"post\" action=\"$_SERVER[PHP_SELF]\">
    Antwoord:  <input type = \"text\" name = \"poging\" style=\"width: 500px\">
    <br><br>
    <input type = \"submit\" name = \"versturen\" value = \"Verstuur\">
    </form>"
;
}

?>


Heeft iemand enig idee hoe ik de switch en de array goed kan koppelen?

Toevoeging op 27/03/2015 15:40:50:

Ik heb het overigens ook geprobeerd met een andere vorm van array:
$vragen[0] = "Van wie was het nummer demons?";
$vragen[1] = "Welke kleur is een banaan?";
$vragen[2] = "Door wie zijn de Harry Potter boeken geschreven?";
$vragen[3] = "Hoe heet deel 2 van The Hobbit?";
$vragen[4] = "Welk dier lijkt het meest op de mens?";
$vragen[5] = "Wie organiseerde de New Year Revolution in Miami, 2014-2015?";
Echter kreeg ik dit ook niet voor elkaar
 
PHP hulp

PHP hulp

27/04/2024 03:48:09
 
Thomas van den Heuvel

Thomas van den Heuvel

27/03/2015 15:48:46
Quote Anchor link
Je moet op een of andere manier onthouden welke vraag is gesteld, zodat je het juiste antwoord kunt vergelijken met het verstuurde antwoord. Dit onthouden vraagnummer is wat je in je switch-statement wilt invullen.

Nu ik er over nadenk: je hebt dit hele switch-statement niet nodig, omdat je vraag en antwoord bij elkaar op kunt slaan in je array. De informatie die je moet versturen blijft hetzelfde (vraag nummer en eigen antwoord).
 

27/03/2015 15:55:57
Quote Anchor link
Doe in plaats van
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

case "*";

?>

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

case "*":

?>

Geen Puntcomma maar een dubbele punt
 
Merel Witsenboer

Merel Witsenboer

27/03/2015 15:59:46
Quote Anchor link
ik had al geprobeerd om vraag en antwoord bij elkaar in een array te doen met "=>" ertussen, maar dat werkte ook niet, dan pakt hij op de een of andere vage manier een random ander antwoord, op deze manier:
$array = ("kip"=>"dier", "keuken"=>"huis");
$vraag = array_rand($array);
$antwoord = $array[$vraag];
maar dan vond het programma de helft van de tijd dat kip bij huis hoorde en keuken bij dier...

ik heb ondertussen iets nieuws geprobeerd met de switch:

switch($devraag)
{
case $devraag== "Van wie was het nummer demons?"; $antwoord="imagine dragons"; break;
case $devraag== "Welke kleur is een banaan?"; $antwoord="geel"; break;
case $devraag== "Door wie zijn de Harry Potter"; $antwoord="j.k. rowling"; break;
case $devraag== "Hoe heet deel 2 van The Hobbit?"; break;
case $devraag== "Welk dier lijkt het meest op de mens?"; $antwoord="de aap"; break;
case $devraag== "Wie organiseerde de New Year Revolution in Miami, 2014-2015?"; $antwoord="armando christian perez"; break;
default; echo "foutmelding"; break;
}

nu krijg ik er meestal geen default uit, maar weer random antwoorden...

Toevoeging op 27/03/2015 16:02:10:

de dubbelepunt of puntkomma maakt niet uit, net geprobeerd maar maakt geen verschil

Toevoeging op 27/03/2015 16:02:21:

de dubbelepunt of puntkomma maakt niet uit, net geprobeerd maar maakt geen verschil

Toevoeging op 27/03/2015 16:05:07:

Thomas van den Heuvel, weet u ook hoe ik het voor elkaar kan krijgen dat het programma onthoudt welke vraag is gekozen?
 

27/03/2015 16:05:26
Quote Anchor link
Nogmaals, Gebruik een dubbele punt (:).

Dit nieuwe script gaat sowieso niet verken.

En bij case 3 staat niets in
 
Merel Witsenboer

Merel Witsenboer

27/03/2015 16:06:59
Quote Anchor link
case 3 weer ingevuld, had per ongeluk weggehaald, dubbele punten heb ik, maar wat zou ik anders kunnen proberen?
 
Thomas van den Heuvel

Thomas van den Heuvel

27/03/2015 16:33:01
Quote Anchor link
Meesturen van het vraag-id via een hidden veld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="hidden" name="vraag_id" value="<?php echo $vraag ?>" />

Mogelijke structuurverbetering van vragen-array:
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
$vragen
= array(
    // vraag 0
    array(
        'vraag' => '...',
        'antwoord' => '...',
    ),

    // vraag 1
    array(
        'vraag' => '...',
        'antwoord' => '...',
    ),

    // etc.
);
/*
voorbeelden:
$vragen[0]['vraag'] bevat de vraag van vraag nummer 0
$vragen[1]['antwoord'] bevat het antwoord van vraag nummer 1
*/

?>
 



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.