Извиняюсь за то, что спросил.Короче говоря, я делаю простую доску с кнопкой «Мне нравится» для каждого изображения. Количество кликов (лайки) сохраняет в файле counter.txt в следующем формате:
click-001||15
click-002||7
click-003||10
Нажатие кнопок запускает небольшой код php через AJAX.counter.php:
<?php
$file = 'counter.txt'; // path to text file that stores counts
$fh = fopen($file, 'r+');
$id = $_REQUEST['id']; // posted from page
$lines = '';
while(!feof($fh)){
$line = explode('||', fgets($fh));
$item = trim($line[0]);
$num = trim($line[1]);
if(!empty($item)){
if($item == $id){
$num++; // increment count by 1
echo $num;
}
$lines .= "$item||$num\r\n";
}
}
file_put_contents($file, $lines);
fclose($fh);
?>
Поэтому, когда я запускаю веб-сайт и тестирую клик по кнопкам, я получаю следующее сообщение:
Примечание: неопределенное смещение: 1 в C: \ wamp64 \www \ wogue \ counter.php в строке 18
Я подумал, что скрипт counter.php создает пробел в новой строке в counter.txt, поэтому он не может взорватьсяи, таким образом, сделать [1] индекс.Я понял это путем возврата последней пустой строки в TXT-файле и ее сохранения.Он работал без ошибок, пока я не нажал кнопку несколько раз, затем появилась та же ошибка.
Кусок кода в индексе выглядит так:
<?php
$clickcount = explode("\n", file_get_contents('counter.txt'));
foreach($clickcount as $line){
$tmp = explode('||', $line);
$count[trim($tmp[0])] = trim($tmp[1]);
}
?>
Есть идеи? ..