У меня есть опрос «голосования» на моем сайте и для сохранения результатов он использует текстовый файл. Я в основном читаю существующие результаты, увеличивая новые результаты и сохраняя их снова.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
Включить оповещение об ошибках. Есть ли сообщения об ошибках? Осмотрите файл. Обновлена ли последняя измененная дата? Совет. Поместите имя файла в переменную и используйте ТО, а не жесткое кодирование «poll_results.txt» каждый ... –
Также, в зависимости от того, насколько занят этот опрос, вы можете столкнуться с проблемами доступа к файлу, если он уже открыт для записи. Вы можете потерять данные. –
Вам не хватает котировок на 'w'. И вы не закрываете файл. –