vergelijken van twee $trings gaat niet als gewenst

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Paul Meijer

Paul Meijer

12/08/2017 00:55:35
Quote Anchor link
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
Gewijzigd op 17/08/2017 23:17:19 door - Ariën -
 
PHP hulp

PHP hulp

24/11/2024 06:10:45
 
- SanThe -

- SanThe -

12/08/2017 01:33:33
Quote Anchor link
Echo $line eens. En het kan zijn dat er een enter aan het eind van $line staat dus gebruik trim($line).
 
Thomas van den Heuvel

Thomas van den Heuvel

12/08/2017 01:39:46
Quote Anchor link
Inspecteer eens wat in $line zit, en zou je niet beter het hele bestand in één keer in een array kunnen lezen met behulp van file()? Let er wel op dat hier nog regeleinden aan vast kunnen zitten, maar die kun je eenvoudig verwijderen met behulp van array_map('trim', $array) ofzo.

En als iets niet lijkt te matchen, print het eens op het scherm :).

@SanThe wss zit de hele inhoud van het bestand in $line ipv een enkele regel, althans in de eerste iteratie, mogelijk is die na de eerste iteratie leeg omdat er niets meer te lezen valt. Bij twijfel --> maak het visueel (dump naar scherm).
Gewijzigd op 12/08/2017 01:41:15 door Thomas van den Heuvel
 
Paul Meijer

Paul Meijer

12/08/2017 02:40:16
Quote Anchor link
Te laat, te lang bezig geweest!!

Er zat een heel simpele fout in: ik gebruikte twee verschillende variabelen ($x en $teller) om leden van een paar uit twee arrays te vergelijken. Kijk maar:

for ($x=0;$x<=count($ingevuld_correct)-1;$x++){
$line = fgets($file);
if ($ingevuld_correct[$teller]!=$line){
 
- Ariën  -
Beheerder

- Ariën -

17/08/2017 23:16:52
Quote Anchor link
Geen admin/mod vraag over het forum. Daarom even een schopje naar het juiste forum.
Gewijzigd op 17/08/2017 23:17:30 door - Ariën -
 
Paul Meijer

Paul Meijer

04/09/2017 17:23:07
Quote Anchor link
- Ariën - op 17/08/2017 23:16:52:
Geen admin/mod vraag over het forum. Daarom even een schopje naar het juiste forum.


Als relatief nieuwe gebruiker vraag ik admin naar welk forum mijn bericht is geplaatst. Ik heb namelijk weer een advies nodig over een pagina met zowel javascript als php en wil dus graag weten waar ik mijn vraag om hulp het beste kan posten.
Bij voorbaar dank,
Paul Meijer
 
- Ariën  -
Beheerder

- Ariën -

04/09/2017 17:57:46
Quote Anchor link
Dit topic stond eerst in het 'admin / mod hulp' forum, en dat is bedoeld voor specifieke vragen over de PHPhulp-community die je aan crewleden wilt stellen.

Daarom heb ik dit topic naar het 'programmeerhulp' forum verhuisd.

Op de forum-index staan beschrijvingen bij de forums, zodat duidelijk is waar welk topic hoort.
Gewijzigd op 04/09/2017 17:58:58 door - Ariën -
 



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.