Met de kennis van PHP van meer dan tien jaar geleden ben ik toch al een heel eind bij het opzetten van een protocol voor de intake van buitenlandse studenten om hun beheersing van onze taal te meten. Daartoe doen zij een toets met zowel gesloten (meerkeuze) als open opgaven. De open opgaven worden beoordeeld door een docent, de gesloten opgaven kunnen natuurlijk direct gescoord worden. Ik wil graag dat de adviserende docent voordat hij/zij de open vragen beoordeelt door kleurgebruik in één oogopslag kan zien hoe een adspirant-cursist de gesloten opgaven ervan af heeft gebracht. Na het voltooien van de toets door de cursist-in-spe krijgt de docent een mail met een link naar een webpagina waarin de ingevulde persoonlijke gegevens en wat hij/zij in de toets heeft gedaan worden opgehaald uit een tekstbestand. So far so good.
Voor de gesloten opgaven wil ik graag dat de goede antwoorden in groen en de foute in rood worden gepresenteerd. Ik vergelijk steeds een regel uit het aangemaakte tekstbestand met de gemaakte toetsen met een lid uit een array met de goede antwoorden. Als die twee gelijk zijn komt de regel in groen tevoorschijn, anders in rood. Is de bedoeling. Bij de vergelijking worden echter alle paren als ongelijk beoordeeld, terwijl ze dat niet zijn. Hieronder mijn PHP-code en enkele paren, met links het goede antwoord en rechts het antwoord van de adspirant-cursist. Ik heb van alles geprobeerd om te ontdekken waarom de paren niet de gewenste kleur krijgen naargelang ze gelijke leden hebben, maar ik kom er niet uit. Ik zou erg blij zijn met enige suggesties die naar de oplossing kunnen leiden.
PM
NB. de toetsdata zitten in een bestandje waarvan de naam is opgeslagen in $toetsdata (zoiets als "toetsdata1245.txt"), de correcte antwoorden in de array ($ingevuld_correct)
echo "\n\n\n<P><P> Hier beginnen de toetsdata: <P>\n\n";
$file = fopen($toetsdata, "r");
for ($x=0;$x<=count($ingevuld_correct)-1;$x++){
$line = fgets($file);
if ($ingevuld_correct[$teller]!=$line){
echo "<font color='red'>";
}else{
echo "<font color='green'>";
}
echo $x." ".$ingevuld_correct[$x]." ".$line."</font>oo</BR>";
}
fclose($file);
Hieronder vier paren van correcte antwoorden (1 en 4) en incorrecte (2 en 3). Die laatste dus zouden rood moeten zijn, tegenover het groen van 1 en 4.
0 automaat automaat
1 lokaal locale
2 schrikt sgrikt
3 gemakkelijk gemakkelijk
2.373 views