Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: склонение числительных
 
 автор: FiX   (12.07.2005 в 15:40)   письмо автору
 
 

Есть скрипт счетчика. Все работает, но я решил чуть добавить грамматику.
Код:

if ($online<5) {
 print "Вместе с Вами сайт просматривают $online посетителя";
 }
 if ($online<=5) {
 print "Вместе с Вами сайт просматривают $online посетителей"; }
 if ($online==21 || $online==31 || $online==41 || $online==51 || $online==61 || $online==71 || $online==81 || $online==91 || $online==101) {
 print "Вместе с Вами сайт просматривают $online посетитель"; }


По замыслу должно выводиться надпись "Вместе с вами просматривают сайт 3 посетителя" или "7 посетилелей" или "21 посетитель". Но он зачем-то выводить сразу две строки:
"Вместе с Вами сайт просматривают 4 посетителя Вместе с Вами сайт просматривают 4 посетителей"

Зачем? Команду break здесь не используешь...

   
 
 автор: method   (12.07.2005 в 15:50)   письмо автору
 
   для: FiX   (12.07.2005 в 15:40)
 

а если пробежаться по файлу или таблице циклом с условием онлайн,или в массив
поместить ,подсчитать всё это дело(тех кто онлайн) и вывести....

   
 
 автор: isset   (12.07.2005 в 16:02)   письмо автору
 
   для: FiX   (12.07.2005 в 15:40)
 

А не делают так. Как не помню. А выводит потому что:

if ($online<5) {
print "Вместе с Вами сайт просматривают $online посетителя";
}
if ($online<=5) {
print "Вместе с Вами сайт просматривают $online посетителей"; }

   
 
 автор: Maloy   (12.07.2005 в 16:16)   письмо автору
 
   для: isset   (12.07.2005 в 16:02)
 

А ты не прбовал испоьзовать elseif?
И жесче условия сделай... Ведь 4 это <5 но это ведь и <=5 в то же время.

if ($online<5) {
print "Вместе с Вами сайт просматривают $online посетителя";
}
if ($online>=5 and $online!=21 and $online!=31 .....) {
print "Вместе с Вами сайт просматривают $online посетителей"; }
if ($online==21 or $online==31 .....) {
print "Вместе с Вами сайт просматривают $online посетитель"; }

Обычная логика. Хорошо тренируеться при работе со сложными SQL запросами

   
 
 автор: method   (12.07.2005 в 16:27)   письмо автору
 
   для: Maloy   (12.07.2005 в 16:16)
 

ну вот на файлах ,примерно так,не тэстил но должно работать:
файл в котором отмечаются последние запросы юзеров к сайту:

Вася*1119604412
Мася*1119604412


<?php
$server_time 
time()+$server_time;
$vremy_online 60*5;
$us_on=0;
$users file($on_lines);//читаем вышеупомянутый файл в массив
foreach($users as $line){
$user explode("*"$line);
if((
$server_time $user[1]) < $vremy_online){$us_on++;
}
print 
"Вместе с Вами сайт просматривают $us_on посетителей";
?>


тема наподобие

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=5382&page=1

   
 
 автор: isset   (12.07.2005 в 16:51)   письмо автору
 
   для: FiX   (12.07.2005 в 15:40)
 

Так же возможно ошибка в

if ($online<=5) {
Может все таки
if ($online>=5) {

?

   
 
 автор: Akira   (12.07.2005 в 18:46)   письмо автору
 
   для: FiX   (12.07.2005 в 15:40)
 

Поробуйте это =)

<?
$online 
99;
$onl=substr($online,strlen($online)-2);
$str "посетител"
    if(
preg_match ("/(2|3|4)/i"$onl)) $add="я"
    if(
preg_match ("/1/i"$onl)) $add="ь";
    if(
preg_match ("/([^1-4]|11)/i"$onl)) $add="ей";
echo 
"Вместе с Вами сайт просматривают $online $str$add\n";
?>

   
 
 автор: FiX   (13.07.2005 в 00:15)   письмо автору
 
   для: Akira   (12.07.2005 в 18:46)
 

Да... Не ожидал, конечно, такого количества ответов, спасибо :)
Попробую все методы :)

   
 
 автор: krot   (13.07.2005 в 01:13)   письмо автору
 
   для: FiX   (13.07.2005 в 00:15)
 

гыгы!
вы чё пацики(там же условия криво проставленны)? фикс проверь логику в первых 2-х eсловиях(типа в уме подставляй значения и смотри что должно выводиться) и юзай elseif!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования