Файлы системы оцениванияСлева
Рисунок 10.1. Файлы системы оценивания.
Слева - статьи, файлы со сценариями и папка с файлами оценок, справа -содержимое этой папки

Теперь выведем сведения об уже выставленных оценках.
echo ("Оценок этой статье - ");
Если файл со сведениями о количестве оценок существует (он создается при первом оценивании)...
if (file_exists("$dirct/$kolvooc")==True)
{
...то вставим его значение в документ.
include ("$dirct/$kolvooc");
Если же такового файла нет, т. е. документ ни разу не оценивался...
}
else
{
...выведем значение "0".
echo ( " 0 " ) ;
}
Если файл со средним баллом существует...
if (file_exists("$dirct/$ocenka")==True)
{
...то надо вывести его значение.
echo (". Средний балл - ");
Но просто включить содержимое файла на страницу нельзя - средний балл может быть и длинной десятичной дробью. Поэтому откроем файл для чтения командой f open (подробнее об этой команде смотрите в предыдущей главе)...
$hdl в fopen("$dirct/$ocenka", "r+");
...и считаем в переменную Ssred все содержимое этого файла.
$sred = fread($hdl, filesize("$dirct/$ocenka"));
Примечание:
Функция fread (дескриптор файла, длина считываемого фрагмента) считывает из открытого файла, для которого получен указанный в ее первом параметре дескриптор, столько байт, сколько указано в ее втором параметре (чтение начинается с местонахождения так называемого указателя файла — отметки, показывающей текущее место работы с файлом; указатель двигается при чтении или записи в файл, а также при использовании команды fseek).
Функция filesize (полный путь к файлу) возвращает размер указанного в ее параметре файла в байтах.
Файл можно закрыть...
fclose($hdl);
...а переменную $sred - округлить до десятых
$sred=round ($sred, 1);
Примечание:
Функция round (число, количество разрядов) округляет дробное число в ее первом параметре до количества разрядов, указанного в ее втором параметре. Скажем, round (число, 1) округлит число до десятых, round (число, 2) - до сотых и т. д.
В РНР до четвертой версии функция round могла округлять числа только до целых, поэтому в том случае, если вы располагаете только такой версией РНР, то команда округления до десятых должна выглядеть как
$sred=(round ($sred*10))/10; ...и вывести на страницу.
echo ("$sred.");
}
Имя cookie, в котором будет находиться информация о том, голосовал ли посетитель за данную статью или нет, тоже будет образовываться из имени файла статьи. Запишем это имя в переменную $haveestim...
$haveestim=$nom."haveest";
...и проверим, определена ли переменная с таким именем - т. е. установлен ли одноименный cookie или нет (Рисунок 10.2). Можно было бы также проверять, какое значение имеет данная переменная, но для нашего сценария это неважно - если переменная установлена и cookie определен, то посетитель уже голосовал за данную статью: ведь cookie с данным именем устанавливается ему в этом и только в этом случае.
if ($$haveestim=="")
Обратите внимание на имя проверяемой переменной - это имя само является значением переменной Shaveestim (подобную конструкцию допускают правила РНР, подробнее смотрите в ).