在PHP中调查未正确保存投票到txt文件

时间:2017-01-03 12:49:14

标签: php html pool survey

我的问题是,当我在调查中投票选出最后一个选项时,调查答案的.txt文件会变成空行,这会破坏投票后生成的图表。

如果您需要,可以查看网站here

我的.txt文件看起来像这样,每一行都是游泳池位置。

0
0
0
0
0

我的index.php

<html>
    <head>
        <title>Ankieta</title>
        <meta charset="utf-8">
    </head>
    <body>
        Oceń poziom nauczania na swojej uczelni:
        <form action="send.php" method="GET" >
            <input type=radio name=1 value="1" checked>2<br>
            <input type=radio name=1 value="2">3<br>
            <input type=radio name=1 value="3">4<br>
            <input type=radio name=1 value="4">5<br>
            <input type=radio name=1 value="5">Nie wiem<br>
            <input type=submit value="Wyślij"/>
        </form>
    </body>
</html>

我的send.php我认为这里可能有问题。

<html>
    <head>
        <title>Ankieta</title>
        <meta charset="utf-8">
    </head>
    <body>
    <?php 
    if(!empty($_COOKIE['glos'])) {
        echo "Głos już oddano! Spróbuj za 40 sekund.";
    } else {
        echo " Dziękuję za głos! Zagłosowano na: ";
        $wyniki=file("wyniki.txt");
        switch($_GET['1']) {
            case "1":
                $wyniki[0]=$wyniki[0]+1;
                echo "2";
            break;
            case "2":
                $wyniki[1]=$wyniki[1]+1;
                echo "3";
            break;
            case "3":
                $wyniki[2]=$wyniki[2]+1;
                echo "4";
            break;
            case "4":
                $wyniki[3]=$wyniki[3]+1;
                echo "5";
            break;
            case "5":
                $wyniki[4]=$wyniki[4]+1;
                echo "Nie wiem";
            break;
        }
        $koncowo=$wyniki[0]."\n".$wyniki[1].$wyniki[2].$wyniki[3].$wyniki[4];
        file_put_contents('wyniki.txt',$koncowo);
    }
    setcookie("glos", 1, time()+40);
    ?>
    <BR>
    <form action="http://nwwnd.cba.pl/ankieta/wyniki.php">
        <input type="submit" value="Wyniki" />
    </form>
    </body>
</html>

我的wynik.php文件

<? 
$wysokosc = 600; 
$szerokosc = 700; 
$graph = ImageCreate($szerokosc, $wysokosc); 
$bialy = ImageColorAllocate($graph,255,255,255); 
$czarny = ImageColorAllocate($graph,0,0,0); 
$rozowy = ImageColorAllocate($graph,255,233,241);
$czerwony = ImageColorAllocate($graph,255,0,0);
$fiolet = ImageColorAllocate($graph,148,0,254); 
$niebieski = ImageColorAllocate($graph,0,0,255); 
$wyniki=file("wyniki.txt");
$wynik1=$wyniki[0];
$wynik2=$wyniki[1];
$wynik3=$wyniki[2];
$wynik4=$wyniki[3];
$wynik5=$wyniki[4];
$wszystko=$wynik1+$wynik2+$wynik3+$wynik4+$wynik5;
$szer1=600*$wynik1/$wszystko;
$szer2=600*$wynik2/$wszystko;
$szer3=600*$wynik3/$wszystko;
$szer4=600*$wynik4/$wszystko;
$szer5=600*$wynik5/$wszystko;
Imagefilledrectangle($graph,0,0,$szerokosc,$wysokosc,$bialy);
Imagerectangle($graph,1,1,($szerokosc-2),($wysokosc-2),$czarny);
Imagefilledrectangle($graph,30,100,($szer1+30),130,$rozowy);
Imagefilledrectangle($graph,30,200,($szer2+30),230,$czerwony);
Imagefilledrectangle($graph,30,300,($szer3+30),330,$fiolet);
Imagefilledrectangle($graph,30,400,($szer4+30),430,$niebieski);
Imagefilledrectangle($graph,30,500,($szer5+30),530,$czarny);
Imagestring ($graph,4,($szer1+40), 100 , $wynik1 , $czarny);
Imagestring ($graph,4,($szer2+40), 200 , $wynik2 , $czarny);
Imagestring ($graph,4,($szer3+40), 300 , $wynik3 , $czarny);
Imagestring ($graph,4,($szer4+40), 400 , $wynik4 , $czarny);
Imagestring ($graph,4,($szer5+40), 500 , $wynik5 , $czarny);
Imagestring ($graph,2,30, 80 , "2" ,$czarny );
Imagestring ($graph,2,30, 180 , "3" ,$czarny );
Imagestring ($graph,2,30, 280 , "4",$czarny );
Imagestring ($graph,2,30, 380 , "5",$czarny );
Imagestring ($graph,2,30, 480 , "Nie wiem",$czarny );
imagettftext ($graph,20,0,300,60,$czarny,"arial.ttf","Ankieta");
Header("Content-type: image/png"); 
ImagePng($graph); 
ImageDestroy($graph); 
?> 

当我投票选出第5个选项时,wyniki.txt如下所示

0

0
0
0
1

有什么问题?这个空行来了哪里?

1 个答案:

答案 0 :(得分:1)

删除此行"\n"

中的$koncowo=$wyniki[0]."\n"

由于您的所有新值都需要一个新行,您应该执行以下操作以确保每一行都得到正确处理:

$koncowo = array($wyniki[0], $wyniki[1], $wyniki[2], $wyniki[3], $wyniki[4]);
$contents = implode(PHP_EOL, $koncowo); // add an EOL to each array member
file_put_contents('wyniki.txt',$contents);