2016-12-15 2 views
1

У меня есть опрос «голосования» на моем сайте и для сохранения результатов он использует текстовый файл. Я в основном читаю существующие результаты, увеличивая новые результаты и сохраняя их снова.PHP Написание и чтение в текстовый файл

Однако, похоже, файл прочитан, а затем сохраните файл. Но когда я перечитываю данные для проверки после этого, файл, похоже, не сохранил должным образом ... Я не уверен, что происходит, и мои разрешения для веб-серверов должны быть в порядке, так как у меня есть счетчик посетителей, который пишет/читает текстовый файл.

Вот код poll_vote.php:

<?php 
$vote = $_REQUEST['vote']; 

//open file read current votes 
$contents = file("poll_result.txt"); 

//put content in array, split between the ; 
$array = explode(";", $contents[0]); 
$yes = $array[0]; 
$no = $array[1]; 

echo("Opened file and read contents. YES-" . $yes . " NO-" . $no . "<br>"); 

//Check if it's a yes or no vote 
if ($vote == 0) 
{ 
    $yes = $yes + 1; 
    echo("Incremented yes vote, it is now" . $yes . "<br>"); 
} 

if ($vote == 1) 
{ 
    $no = $no + 1; 
    echo("Incremented no vote, it is now" . $no . "<br>"); 
} 

//insert new votes to txt file 
$insertvote = $yes. ";". $no; 

echo("To insert: " . $insertvote . "<br>"); 

$wfile = fopen('poll_result.txt', w); 
fputs($wfile, $insertvote); 

echo("Done."); 

////////////////////////////////////////////////// 

//open file read current votes 
$contents = file("poll_result.txt"); 

//put content in array, split between the || 
$array = explode(";", $contents[0]); 
$yes = $array[0]; 
$no = $array[1]; 

echo("Re-read data: " . $yes . "|" . $no); 

?> 

Текстовый файл сохраняется в формате: 0; 0

+1

Включить оповещение об ошибках. Есть ли сообщения об ошибках? Осмотрите файл. Обновлена ​​ли последняя измененная дата? Совет. Поместите имя файла в переменную и используйте ТО, а не жесткое кодирование «poll_results.txt» каждый ... –

+2

Также, в зависимости от того, насколько занят этот опрос, вы можете столкнуться с проблемами доступа к файлу, если он уже открыт для записи. Вы можете потерять данные. –

+0

Вам не хватает котировок на 'w'. И вы не закрываете файл. –

ответ

0

Вы должны закрыть файл, чтобы правильно записать его на диск

Пробег

fputs($wfile, $insertvote); 
fclose($wfile); //close the file 
echo("Done."); 
+0

Не уверен, что это исправлено, так как я сделал и другие вещи выше, но теперь он работает ура –

Смежные вопросы