вывод числа из диапозона по порядку - [php]

ufaclub

Полезный
Регистрация
1 Май 2007
Сообщения
395
Реакции
19
есть диапозон [1-40]
нужно выводить числа по порядку при каждой перезагрузки страницы

например открыли страницу - вывелось число 1 - нажалаи перезагрузить страницу - вывелось число 2 .... и так далее по кругу до 40.
потом снова 1

думаю вот надо предыдушее значение скидывать в файл наверно и перед выводом числа считывать оттуда значение и добавлять + 1

подскажите на примере пшп только только изучаю.. на примере просто понятней было бы
 
Вот думаю подойдёт
PHP:
<?php
$url = "count.txt";//Указываем адрес файла с данными для записи
if (file_exists($url)==false)//если файла с данными не существует
{
$handle = fopen($url, "w");//открывая, создаем файл с данными
$count = 0;//устанавливаем значение счетчика на ноль
fwrite($handle, $count);//записываем значение счетчика
fclose($handle);//закрываем файл
}
else//если существует
{
$file = file($url);//Считываем файл в массив
$count = $file[0];//Первая строчка - наши данные, в php отсчет начинается с нуля
}
$count++;//Увеличиваем значение счетчика на 1
if ($count== 40){ $count= 1;} // Если после увеличения число равно 40 сбрасываем на 1
$handle = fopen($url, "w");//Открываем файл для записи
fwrite($handle, $count);//Записываем
fclose($handle);//Закрываем
echo "Просмотров $count";//Выводим данные счетчика
?>
 
parks, твое решение = ололо :)
PHP:
<?php

session_start();

if ( ! isset( $_SESSION['counter'] ) OR $_SESSION['counter'] == 40 )
{
    $_SESSION['counter'] = 1;
}
else
{
    $_SESSION['counter']++;
}

echo $_SESSION['counter'];
?>

:)
 
parks, твое решение = ололо :)
PHP:
<?php
session_start();
if ( ! isset( $_SESSION['counter'] ) OR $_SESSION['counter'] == 40 )
{
    $_SESSION['counter'] = 1;
}
else
{
    $_SESSION['counter']++;
}
echo $_SESSION['counter'];
?>
:)
Ололо - это твоя невнимательность , мой пример щитает общее количество просмотров , а твой конкретного юзера.(Так что кто ололо ещё под вопросом .)Просили простой пример реализации на файлах пожалуста.
 
Ололо - это твоя невнимательность , мой пример щитает общее количество просмотров , а твой конкретного юзера.(Так что кто ололо ещё под вопросом .)Просили простой пример реализации на файлах пожалуста.
А так не проще?
PHP:
$url= "count.txt"; // адрес файла
$handle = fopen($url, "a+"); //открываем файл для чтения и записи если файла нет, то созддаем новый
$count=fgets ($handle); // вычитываем файл
fclose($handle); //закрываем файл
if(!$count){$count=0;} // проверяем на наличие записей, если записи нет, то присваиваем счетчику 0
$count++; // повышаем счетчик
if($count>40){$count=1;} // если счетчик перебрал значение, то сбрасываем его
file_put_contents ($url, $count); // перезаписываем файл
echo "Просмотров: ".$count; // выводим данные счетчика
 
Хорошо бы в последний код добавить блокировку - flock, чтобы не было проблем с одновременным доступом к файлу.
 
Ололо - это твоя невнимательность , мой пример щитает общее количество просмотров , а твой конкретного юзера.(Так что кто ололо ещё под вопросом .)Просили простой пример реализации на файлах пожалуста.

есть диапозон [1-40]
нужно выводить числа по порядку при каждой перезагрузки страницы

например открыли страницу - вывелось число 1 - нажалаи перезагрузить страницу - вывелось число 2 .... и так далее по кругу до 40.
потом снова 1

думаю вот надо предыдушее значение скидывать в файл наверно и перед выводом числа считывать оттуда значение и добавлять + 1

подскажите на примере пшп только только изучаю.. на примере просто понятней было бы

ок :) а где тут написано, что для всех, а не для конкретного юзера? :)

Насчет файлов - проглядел. Да, к твоему решению нужно добавить flock и можно (int) + file_get_contents() вместо if-else сделать.
 
ок :) а где тут написано, что для всех, а не для конкретного юзера? :)
Дак а я о чём , а ты сразу ололо.
Насчет файлов - проглядел. Да, к твоему решению нужно добавить flock и можно (int) + file_get_contents() вместо if-else сделать.
Здесь согласен , на быструю руку стряпал =)
 
Вариант с блокировкой:
PHP:
<?php
$cnt=0;
$file='count.txt';
if(file_exists($file)) {
        $fp=fopen($file,'r');
        flock($fp,LOCK_SH);
        $cnt=(int)fgets($fp,4096);
        flock($fp,LOCK_UN);
        fclose($fp);
}
$cnt++;
if(!file_exists($file)) {
        touch($file);
        @chmod($file,0666);
}
$fp=fopen($file,'r+');
flock($fp,LOCK_EX);
ftruncate($fp,0);
rewind($fp);
fwrite($fp,$cnt);
flock($fp,LOCK_UN);
fclose($fp);
?>
 
Назад
Сверху