Avatar billede rubaek Mester
26. december 2009 - 11:19 Der er 6 kommentarer og
1 løsning

Hjælp til programering

Jeg er underviser i folkeskolen og vil i den forbindelse gerne lave en lille kode opgave til mine elever.
Jeg forestiller mig at jeg giver dem en matematisk opgave, svaret på opgaven skrives i et felt, og hvis svaret er rigtig kommer man videre til næste opgave. Hvis det er forkert bliver man på opgavesiden.

Så jeg vil gerne have hjælp til den del af koden hvor eleverne skriver svaret ind i en boks, samt der hvor siden tjekker svaret og sender videre til næste side.

Er der en php ekspert der vil skrive denne kode til mig?
Avatar billede richardjensen Seniormester
26. december 2009 - 11:49 #1
Hvis det skal være noget seriøst, er det ikke 'bare sådan lige' -og du fortæller ikke,om det er til den lille tabel eller fx. sandsynlighedsregning/trigonometri.
Men hvorfor ikke benytte amtscentralen i dit område,- jeg tror de har et udvalg, som også kan klare dit behov.
Avatar billede khalus Nybegynder
26. december 2009 - 13:06 #2
Hej Rubaek

For at give tilbage til de lærere der på endeløse dage forgæves har prøvet på at stoppe klogskab ind i mit hoved, så har jeg lavet et eksempel. Det har nogle indbyggede svagheder. Eleverne kan fx springe i opgaverne ved at skrive ?nr=3 i URL'en, men jeg regner ikke med at de kan finde ud af det, for det gør det en smule lettere at skrive programmet:

[code]
<?php
$testNummer = $_GET['nr'];
/*
Hvis der skal laves en ny opgave, tilføjer du et "case" med nummeret efter den "case" der er før.
Husk break; og $testNummer++; kommandoerne, ellers går det i lort.
Hvis du ville tilføje en tredje opgave ville det se sådan ud:
case 3;
    $spm = "Ny opgaveformulering";
    $svar = "Nyt svar";
    $testNummer++;
    break;
og så ville du blive nødt til at skifte den nuværende "case 3" til "case 4"
*/

switch($testNummer) {
    case 1;
        $spm = "Hvad er 21*8";
        $svar = "168";
        $testNummer++;
        break;
    case 2;
        $spm = "Hvem elsker flødesovs?";
        $svar = "alle";
        $testNummer++;
        break;
    case 3;
        echo "Du er færdig, den hemmelige kode er: Landskabsforplejningsdekoratør";
        $skjulForm = TRUE;
        break;
    default;
        $spm = "Hvad er 7+7";
        $svar = 14;
        $testNummer = 1;
        break;
}

/*
Her tjekker vi svaret, hvis det passer med svaret i programmet sender vi eleven videre, hvis det ikke passer, så får han lov at prøve igen.
*/
if($_POST){
    $brugerSvar = $_POST['svar'];
    if($brugerSvar == $svar){
        Header("Location: ?nr=$testNummer");
    }
    else {
        echo "Det ser ud til at du gættede forkert, prøv igen.";
    }
   
}
if(!$skjulForm):
?>

<div align="center">
<h1><?php echo $spm; ?></h1>
<form action="" method="POST">
    <fieldset>
        <input type="text" name="svar" /><br>
        <input type="submit">
    </fieldset>
</form>
</div>
<?php endif;
[/code]
Avatar billede khalus Nybegynder
26. december 2009 - 13:09 #3
Det ser ud til at ekspertens textarea gør noget mærkeligt med min kode. Her er den på pastebin:

http://pastebin.org/68801
Avatar billede showsource Seniormester
26. december 2009 - 13:25 #4
Kun for at gi' dig en ide til hvordan det kan laves

<?php
session_start();

$opgaver  = array(
        1 => array("2+2", 4),
        2 => array("4+4", 8),
        3 => array("8+8", 16)
                  );




if(!isset($_SESSION["opgave"])) {
$_SESSION["opgave"] = 1;
}else{
$_SESSION["opgave"]++;
}

if(isset($opgaver[$_SESSION["opgave"]])) {

echo $opgaver[$_SESSION["opgave"]][0]." er lig med ".$opgaver[$_SESSION["opgave"]][1];

}else{

echo"Ikke flere opgaver";

$_SESSION = array();
session_destroy();

}

echo"<pre>";
print_r($_SESSION);
echo"</pre>";
?>
Avatar billede rubaek Mester
26. december 2009 - 20:02 #5
Til khalus
Det ser rigtig fint ud, dog får jeg en fejl når jeg svarer rigtig på spørgsmålet:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web34/html/test2.php:2) in /var/www/web34/html/test2.php on line 44

Er det mig der gør noget forkert eller er der en smutter?
Avatar billede khalus Nybegynder
26. december 2009 - 20:14 #6
Rubaek:

Man kan ikke sende folk videre til en ny side via. Header ("Location: http://url");, hvis der allerede er "udskrevet" noget HTML kode på siden. Scriptet virker fint på min localhost, så prøv følgende:

Sørg for at der ikke er nogle mellemrum eller breakingspaces (enter-knappen) før det første <?php-tag, så skulle det virke.
Dvs. det allerførste i PHP-filen skal være <?php - ingen nye linjer eller mellemrum
Avatar billede rubaek Mester
26. december 2009 - 20:47 #7
Fandt selv fejlen. Det var en autodato kode øverst i min kode. Noget som min teksteditor selv satte ind :-(

Så nu virker det, tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester