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

Форум MySQL

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

 

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

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

тема: сортировка по значению
 
 автор: clubxaliav   (19.10.2009 в 01:56)   письмо автору
 
 

Сделал вывод данных из таблицы users тупо значения 1, 2, 10
Сложил, умножил, разделил, опять сложил, короче получилось число {$bal}.....!
Далее у меня вывод всех пользователей по дате регистрации:

...................
while ( $r = @mysql_fetch_array( $q ) )
       {
echo "$username<br>$bal";
}
....................

Получилось 10000 тыщ пользователей и их баллы активности.

<b>Вопрос:</b>КАК отсортировать пользователей по баллам? Ведь $bal - это не значение БД, а из формул расчета их активности!!!

  Ответить  
 
 автор: Trianon   (19.10.2009 в 02:05)   письмо автору
 
   для: clubxaliav   (19.10.2009 в 01:56)
 

В SQL, однако ж не только требовать данные можно, но и все эти "Сложил, умножил, разделил, опять сложил, короче" делать.
Хотя таки 10 мульенов выстраивать в порядок по произвольному выражению одним индексом не обойтись, а сортировки потребует так или иначе.
И всё ж.

  Ответить  
 
 автор: clubxaliav   (19.10.2009 в 02:13)   письмо автору
 
   для: Trianon   (19.10.2009 в 02:05)
 

ну а как sql отсортирует $bal если его нет в БД?


$r["last_date"]= date("j"); 
 $today = date("j");
 $nday = $today - $r["last_date"];
 if ($nday=="0") { 
 $nday = "1";
 $akt = 100 - ($nday * 3.33 / 10);
  }
 $send = $r["numsendmails"];
 $read = $r["numreadmails"];
 $chit = $read * 100 / $send;
 $nclick = $r["numclicks"]; 
 $nsurf = $r["numsurf"];
    
 $click = $read + $nclick + $nsurf;
 $reting = sprintf("%.0f", ($click * $chit * $akt ) / 1000 );
 $bal = $reting;

  Ответить  
 
 автор: clubxaliav   (19.10.2009 в 02:19)   письмо автору
 
   для: clubxaliav   (19.10.2009 в 02:13)
 

Причем мне все 10000 пользователей не нужны,. . а хотя бы 100 (соточку активных)

  Ответить  
 
 автор: neadekvat   (19.10.2009 в 16:25)   письмо автору
 
   для: clubxaliav   (19.10.2009 в 02:19)
 

Получается, что информация об активности у вас хранится, а балы за эту активность - понятие как бы абстрактное и высчитывается где-то в скриптах?
Почему бы не добавить столбец в бд bal, куда при каких-то действиях пользователя прибавлять значения, в зависемости от того, сколько это действие "весит"?
Например, зашел на сайт - UPDATE ... SET bal = bal+5
Отметился в теме - UPDATE ... SET bal = bal+1
И тд, а потом из бд доставать
ORDER BY bal DESC LIMIT 100

  Ответить  
 
 автор: Valick   (19.10.2009 в 16:58)   письмо автору
 
   для: neadekvat   (19.10.2009 в 16:25)
 

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

  Ответить  
 
 автор: neadekvat   (19.10.2009 в 17:06)   письмо автору
 
   для: Valick   (19.10.2009 в 16:58)
 

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

А по поводу "убыло"... Не могу придумать вариант, где бы "убывалось" настолько сложно и запутанно, что было бы проще в каждом скрипте высчитывать этот балл.

  Ответить  
 
 автор: clubxaliav   (19.10.2009 в 17:46)   письмо автору
 
   для: neadekvat   (19.10.2009 в 17:06)
 

В принципе понятно, остаеться только все это обмыслить!! приму все таки мысль о дополнительном столбце.

  Ответить  
Rambler's Top100
вверх

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