Файл otziv.php
Если же файлы со сведениями об оценке уже существуют…
else
…то считаем для начала содержимое файла с количеством оценок в переменную:
kvo… $hdll = fopen("$dirct/$kolvooc", "r+"); $kvo ¦ fread($hdll, filesize("cnt/$kolvooc"));
…а затем увеличим значение этой переменной на 1 – что и будет новым количеством оценок, с учетом последней выставленной:
$kvo++;
Теперь нам надо вернуть точку считывания (так называемый "указатель") в начало файла – для того, чтобы записать в файл новое значение количества оценок. Ведь в результате проведения операции чтения количества оценок из файла точка считывания – указатель – переместилась в его конец. Для совершения данной операции воспользуемся командой rewind:
rewind($hdll);
Примечание
Команда rewind (дескриптор открытого файла) перемещает точку считывания и записи данных в файл (т. е. указатель файла), в начало этого файла. Если вы записываете что-либо в файл после считывания из него данных, то вам необходимо перед записью воспользоваться этой командой.
Следует помнить, что если файл был открыт командой fopen с параметром а или a+, то независимо от положения указателя запись новых данных командой fwrite будет осуществляться вконец файла.
Запишем новое значение количества оценок в предназначенный для хранения этой величины файл…
fwrite($hdll,$kvo);
…и закроем его.
fclose($hdll);
Теперь разберемся со средним баллом. Откроем файл, где хранится его значение…
$hdl2 = fopen("$dirct/$ocenka", "r+");
…запишем это значение в переменную…
$sred= fread($hdl2, filesize("cnt/$ocenka"));
…и рассчитаем новую величину среднего балла – на основе его старого значения, а также информации о количестве оценок и новой оценки.
$sred=($sred*($kvo-l)+$ocen)/$kvo;
Теперь запишем эти сведения в предназначенный для них файл – точно так же, как и парой абзацев выше.
rewind($hdl2); fwrite($hdl2,$sred); fclose($hdl2);
Собственно, и все.