2017-01-03 14 views
1

Моя проблема заключается в том, что когда я проголосую за, например, последний вариант в опросе, файл .txt с ответами на опрос получает пустую строку, которая разрушает мой график, который генерируется после голосования.Опрос на PHP не правильно сохраняет голоса в 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 

Что не так? Куда приходит эта пустая строка?

+0

Удалите '' \ n "' в этой строке '$ koncowo = $ wyniki [0]." \ N "' –

+0

Спасибо, сэр очень! –

+0

Если ответ решил вашу проблему, подумайте о принятии ответа. Вот как http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work, затем вернитесь сюда и сделайте то же самое с отметкой галочки/галочки, пока он не станет зеленым. Это сообщает об этом сообществу, решение найдено. В противном случае другие могут подумать, что вопрос все еще открыт и может захотеть опубликовать (более) ответы. Вы будете зарабатывать очки, а другие будут рады помочь вам. * Добро пожаловать в Stack! * –

ответ

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); 
+0

Awww ... теперь он делает файл .txt как '0 row 0 row 10 row 0' при голосовании за третий вариант. Таким образом, он буквально объединяет строки 3-го и 4-го и добавляет 1 к 3-му. - Juliusz Urbańczyk 2 мин назад –

+0

Вы можете увидеть его здесь https://s30.postimg.org/4nw8eidn5/Untitled.jpg –

+0

Хорошо, я исправил вторую проблему, добавив «.» \ N "" к каждой строке $ wyniki [ X] = $ wyniki [X] +1. "\ П"; –