Problem mit einer foreach-Schleife und einem Switch
Kanonenfutter
- php
0 jobo0 ChrisB0 Kanonenfutter
Leute, hieran verzweifle ich...
Kurzer Überblick des Sachverhalts: Es soll ein kleines "Umfrageskript" sein, welches in einem kleinen geschlossenen Kreis Verwendung finden sollte.
Jeder hat 3 spezifische Stimmen, und es soll die Möglichkeit geben, selbst Optionen zu nominieren. Klingt trivial, aber dieser Fehler ist noch trivialer;
soweit funktioniert alles. Radio-Buttons werden korrekt konstruiert und eingelesen, aber dann....
$list=file("entries.txt");
$ops=file("options.txt");
$write=fopen("entries.txt","w");
foreach($ops as $i => $o) {
switch($o) { // den gelöschten Inhalt der entries.txt nun nacheinander im Abgleich mit den Stimmen neu schreiben
case $inone: // Erststimme zählt wie 3, Zweite wie 2 etc.
$tmp=intval($list[$i]);
$tmp+=3;
fwrite($write, "$tmp", 1000);
break;
case $intwo:
$tmp=intval($list[$i]);
$tmp+=2;
fwrite($write, "$tmp", 1000);
break;
case $inthree:
$tmp=intval($list[$i]);
$tmp++;
fwrite($write, "$tmp", 1000);
break;
default: // Den alten Kram beibehalten, wenn die Option keine Stimme erhielt
fwrite($write, $list[$i], 1000);
break;
}
}
fclose($write);
$list=file("entries.txt");
"Oh mein Gott, in Textdateien?" Ja, von mir aus, ich war zu faul, mich in MySQL reinzulesen, darüberhinaus schien es mir unnötig, da ich ohnehin nicht viele Zugriffe auf das Skript erwarte und ich die Performance unterordnen kann. Aber ich mag das System zunächst etwas erläutern.
options.txt beherbergt die Wahlmöglichkeiten
entries.txt ist das Gegenstück dazu: Sie speichert die abgegebenen Stimmen in der korrespondierenden Zeile ab. Oder auch nicht. Habe ich alle benötigten Zeilen mit ausreichenden Nullen in jeder Zeile gefüllt, um den Testzwecken gerecht zu werden(Ich automatisiere das später, derzeit lohnt es sich nicht, in etwas anderes Zeit und Nerven zu investieren...), kann ich auch schon testweise wählen, mit dem fingernägelhochrollenden Resultat diverser Kästchen hinter jeder 0...außer der letzten, die letzte Option, egal mti was angewählt, wird korrekt ausgewertet!
Dem aufmerksamen Leser ist möglicherweise nicht entgangen, dass ich bei Fwrite() auf Zeilenabsätze a la "\n" verzichte. Das heißt aber nicht, dass keien Zeilenabsätze gemacht werden, im Gegenteil, aber ich befürchte, dass genau dort das Problem liegt, und ich weiß nicht ,wie ich das geschickterweise unterbinden kann.
Sorry für die Wand ungetümen Textes ._.
Hallo,
was war jetzt dein problem? isoliere die probleme oder das problem. teil 1 der lösung.
Gruß
jobo
Hi,
Es soll ein kleines "Umfrageskript" sein, welches in einem kleinen geschlossenen Kreis Verwendung finden sollte.
Jeder hat 3 spezifische Stimmen,
Und wie viele unspezifische?
und es soll die Möglichkeit geben, selbst Optionen zu nominieren. Klingt trivial,
Nein, klingt unverständlich.
aber dieser Fehler ist noch trivialer;
Vor allem ist seine Beschreibung in deinem Posting unvorhanden.
</hilfe/charta.htm#tipps-fuer-fragende>
MfG ChrisB
Das Problem habe ich bereits beschrieben:
"kann ich auch schon testweise wählen, mit dem fingernägelhochrollenden Resultat diverser Kästchen hinter jeder 0...außer der letzten, die letzte Option, egal mit was angewählt, wird korrekt ausgewertet!"
Im Klartext: In entries.txt werden die Stimmen nicht korrekt auf die Zahlen in der entsprechenden Zeile addiert, lediglich bei der letzten.
Sieht dann etwa so aus:
0
0
0
0
3
Hinter den Nullen befinden sich die berüchtigten Kästchen unbekannter Zeichen. Nachdem ich etwas darüber reflektieren konnte, kann es gut sein, dass der Absatz da irgendwie in die Quere kam. Das würde auch Sinn ergeben, da beim letzten die Addition korrekt ausgeführt wird. Ich probiere einfahc mal, die Zeile auf die entsprechenden Indexe zu reduzieren.
Ach ja, "spezifische" war unglücklich ausgedrückt, es sind einfach 3 Stimmen mit verschiedener Gewichtung.