[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не срабатывает одно условие при вывод
McLotos
Всем привет.
У меня есть функция, которая подсчитывает количество зарегистрированных пользователей онлайн, и выводит их имена. Всё прекрасно, за исключением одного маленького нюанса:
Когда по логике должна быть надпись 2 пользователЯ она всё-равно пишет 2 пользователЕЙ, а в остальных случаях всё нормально.
вот код:
function Online()
{ $counts = mysql_query ("select uid from cc_Members Where online='1';");
$col = mysql_num_rows($counts);
$result = "$col";
$mess = preg_replace("(2|3|4)","пользователя", substr($result, -1));
((
substr($mess, -1) * 1) > 1 OR (substr($mess, -1) * 1) == 0) ? $mess = "пользователей" : $mess = "пользователь";
echo 'На сайте <font color=yellow>'.$result .'</font> '.$mess.':<br>';
$sql = mysql_query("Select `uid`,`Login`,`group` from cc_Members Where online=1");
do
{
switch ($r['group'])
{
case "Teachers":$color="Yellow";break;
case "Administrators":$color="Red";break;
case "Students":$color="Lime";break;
case "Observer":$color="Grey";break;
}
echo "<a href='?m=".$r['uid']."'><font color=".$color.">".$r['Login']."</a></font> ";
}
while
($r = mysql_fetch_assoc($sql));
}




Спустя 9 минут, 41 секунда (6.12.2011 - 10:26) Oyeme написал(а):
1.Зачем Вы используете 2 одинаковых запроса. ;)
2.Вам не кажется что Вы извращенец?
$mess = preg_replace("(2|3|4)","пользователя", substr($result, -1));
((
substr($mess, -1) * 1) > 1 OR (substr($mess, -1) * 1) == 0) ? $mess = "пользователей" : $mess = "пользователь";


(Вам только нужно условие )
$total_users = mysql_num_rows($counts);

$users = $total_users => 5 'пользователей ' : 'пользователь';

3.Это называется говно-код.

Спустя 8 минут, 17 секунд (6.12.2011 - 10:35) McLotos написал(а):
Цитата
Вам не кажется что Вы извращенец?

Я об этом догадывался =)
но как же 2|3|4 пользователЯ?

Спустя 4 минуты, 23 секунды (6.12.2011 - 10:39) Oyeme написал(а):
$total_users = 5;
if($total_users >=5 || $total_users == 0){
$users = 'пользователей';
}elseif($total_users >= 2 && $total_users <=4){
$users = 'пользователя';
}
else {
$users = 'пользователь';
}

Спустя 2 минуты, 32 секунды (6.12.2011 - 10:42) Placido написал(а):
Цитата (Oyeme @ 6.12.2011 - 09:39)
$total_users = 5;
if($total_users >=5 || $total_users == 0){
$users = 'пользователей';
}elseif($total_users >= 2 && $total_users <=4){
$users = 'пользователя';
}
else {
$users = 'пользователь';
}

Не забываем: 22, 32 и т.д. пользователя.
А еще 102, 202 пользователя =)

Спустя 7 минут, 43 секунды (6.12.2011 - 10:49) McLotos написал(а):
примитино как-то получается, и большой объем кода.

Спустя 16 минут, 51 секунда (6.12.2011 - 11:06) alexbel2404 написал(а):
Пользователей онлайн: 1
Пользователей онлайн: 32
Пользователей онлайн: 102

biggrin.gif

Спустя 1 минута, 49 секунд (6.12.2011 - 11:08) McLotos написал(а):
alexbel2404
Цитата
Пользователей онлайн: 1
Пользователей онлайн: 32
Пользователей онлайн: 102

Ну да. Самый верный выход всегда на поверхности, но всё-равно хотлось бы сделать именно так.

Спустя 3 минуты, 57 секунд (6.12.2011 - 11:12) Oyeme написал(а):
Что-то типо такого:

Updated
<?php

function
inducement($num, $words)
{
$num = $num % 100;
if ($num > 19) {
$num = $num % 10;
}
switch ($num) {
case 1:
{
return ($words[0]);
}
case 2:
case 3:
case 4:
{
return ($words[1]);
}
default:
{
return ($words[2]);
}
}
}

echo inducement(32, array(' Пользователь', ' Пользователя', 'Пользователей'));
?>

Спустя 1 час, 52 минуты, 2 секунды (6.12.2011 - 13:04) McLotos написал(а):
А если не указывал количесвта?
Ну как в приведенном мной примере, я же там не укказываю заранее то количество при котором нужно применить условие.


_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.