PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Counter Problem



Maisaffe
21.12.2004, 19:52
<?php
// COUNTER START
switch($_POST['vote'])
{
case '1':
$vote_1 = fopen('vote1','r+');
$vote_1_counter = fgets($vote_1, 3);
if($vote_1_counter == '')
{
$vote_1_counter = 0;
}
$vote_1_counter++;
echo $vote_1_counter;
rewind($vote_1);
fwrite($vote_1, $vote_1_counter);
fclose($vote_1);

case '2':
$vote_2 = fopen('vote2','r+');
$vote_2_counter = fgets($vote_2, 3);
if($vote_2_counter == '')
{
$vote_2_counter = 0;
}
$vote_2_counter++;
echo $vote_2_counter;
rewind($vote_2);
fwrite($vote_2, $vote_2_counter);
fclose($vote_2);

case '3':
$vote_3 = fopen('vote3','r+');
$vote_3_counter = fgets($vote_3, 3);
if($vote_3_counter == '')
{
$vote_3_counter = 0;
}
$vote_3_counter++;
echo $vote_3_counter;
rewind($vote_3);
fwrite($vote_3, $vote_3_counter);
fclose($vote_3);

case '4':
$vote_4 = fopen('vote4','r+');
$vote_4_counter = fgets($vote_4, 3);
if($vote_4_counter == '')
{
$vote_4_counter = 0;
}
$vote_4_counter++;
echo $vote_4_counter;
rewind($vote_4);
fwrite($vote_4, $vote_4_counter);
fclose($vote_4);

case '': echo '';
default: echo '';
}
// COUNTER ENDE
?>
Stats jedoch nur die ausgewählten (welche per case 'x': aufgerufen werden) anzuzeigen, werden bei '1' alle angezeigt, bei '2' werden 2,3 und 4 angezeigt, bei '2' 2+1 und bei 1 zum Glück nur 1...

Jedoch soll nur bei '3' - 3 angezeigt werden :(

Dennis
PS: Die Counter Dateien existieren (logisch ;) sonst würde nur ein Fehler bei dem Lese/Schreib Mode 'r+' angezeigt ;))

Kermit.d
21.12.2004, 20:23
Ich denke mal du hast ein par breaks vergessen. wenn du kein break gesetzt hast, dann werden bei einem fall alle nachfolgenden fälle mitabgearbeitet.

bsp:

<?php

switch ($var)
{
case 1:
// code
case 2:
// code
break;
case 3:
// code
}
?>

bei 1 werden 1+2 abgearbeitet. bei 2 nur zwei und bei 3 nur drei.

pogo
21.12.2004, 20:39
Du musst bei nach dem code von jedem case ein break; setzen. Damit werden alle nachfolgenden anweisungen ignoriert und sofort zum ende des switch gesprungen.

EDIT: Mist, da war jemand schneller...sogar ziemlich :D

Maisaffe
21.12.2004, 21:04
Ich denke mal du hast ein par breaks vergessen. wenn du kein break gesetzt hast, dann werden bei einem fall alle nachfolgenden fälle mitabgearbeitet.

bsp:

<?php

switch ($var)
{
case 1:
// code
case 2:
// code
break;
case 3:
// code
}
?>

bei 1 werden 1+2 abgearbeitet. bei 2 nur zwei und bei 3 nur drei.
aaaah ;)

Danke (wieso hab ich des vergessen Oo)

Dennis