Hallo PHPHulp!

Ik ben op zoek naar een manier om uit een .txt-bestand enkele vragen en antwoorden te halen. Deze wil ik in een array zetten en vervolgens de vraag weergeven in een formulier, en vervolgens kijken als het opgegeven antwoord overeenkomt met het antwoord uit het tekstbestand.

Ik heb dus file.txt met volgende informatie:
Vraag 1:Antwoord 1
Vraag 2:Antwoord 2
Vraag 3:Antwoord 3

Dit wil ik uitlezen, en vervolgens op mijn pagina het volgende formulier plaatsen:

Vraag 1
input1: _____________

Vraag 2
input2: _____________

Vraag 3
input3: ____________

Na een check wil ik dan kijken als input1 overeenkomt met Antwoord1, input 2 met Antwoord2 enzovoort. Ik heb al iets geprobeerd, maar krijg allemaal fouten en rare meldingen. Wellicht klopt er dus niet veel van. Iemand die me hierbij kan helpen?

<?php

$fileOpen = fopen('file.txt', 'rb');
$fileRead = fread($fileOpen, filesize('file.txt'));
fclose($fileOpen);

$splitLines = explode("\n", $fileRead);
$questions[] = array();
$splitValue = ":";

foreach($splitLines as $string) {
	$row = explode($splitValue, $string);
	array_push($questions, $row);
}

print_r($questions);

if($_POST['submit']) {

	$answer = $_POST['answer'];
	foreach($questions as $questionNumber => $value) {
		if($answer[$questionNumber] != $value[1]) {
			echo "Wrong!<br />";
		} else {
			echo "Correct!<br />";
		}

	}

} else {

	?>
	<form action=<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?> method='post'>

		<?php
		
		$i = 0;

		foreach ($questions as $questionNumber => $value) { ?>
			<label for="answer[<?php echo $questionNumber; ?>]"><?php echo $value[0]; ?></label><br />
			<input type="text" id="answer[<?php echo $questionNumber; ?>]" name="answer[<?php echo $questionNumber; ?>]" value="" /><br />

			<?php
			if(++$i == 2) break;
		}

		?>

		<input type="submit" name="submit" value="Controleer">
		
	</form>
	<?php

}

?>


De bedoeling is dus om te kijken als de bezoekers het juiste antwoord op de vraag weten.
In iedergeval kun je om te beginnen veel makkelijker de regels uit het bestand en direct in een array inlezen met de php file() functie.


<?php
$lines = file('file.txt');
$splitValue = ':';
$questions = [];

foreach($lines as $string) {
    $questions[] = explode($splitValue, $string);
}


if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $answer = $_POST['answer'];
    
    foreach($questions as $questionNumber => $value) {
        if(trim(strtolower($answer[$questionNumber])) == trim(strtolower($value[1]))) {
            echo $value[0] . ' == ' . $value[1] . ': <span style="color:green; font-weight:bold;">Correct!</span><br>';
         } else {
            echo $value[0] . ' == ' . $value[1] . ': <span style="color:red; font-weight:bold;">Wrong!</span><br>';
    }

}

} else {

?>
    <form action="" method='post'>

        <?php
        
        $i = 0;

        foreach ($questions as $questionNumber => $value) { ?>
            <label for="answer<?php echo $questionNumber; ?>"><?php echo $value[0]; ?></label><br />
            <input type="text" id="answer<?php echo $questionNumber; ?>" name="answer[]" /><br />

            <?php
            //if(++$i == 2) break;
        }

        ?>

        <input type="submit" value="Controleer">
        
    </form>
    <?php

}

?>

Reageren