Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2010, 13:00   #1
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию PHP + MySQL рейтинг

Объясните, пожалуйста, уважаемые программисты, как на PHP можно создать рейтинг чего либо.

Допустим, рейтинг оценок. Предположем, в БД есть таблица, в которой 2 столбца: "имя ученика" и "сумма всех его оценок". При просмотре информации об ученике, мне надо узнать какой у него номер в рейтинге. Как это можно реализовать? Укажите, пожалуйста, направление.
No name. Just Linel.
Linel вне форума Ответить с цитированием
Старый 02.05.2010, 14:12   #2
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
По умолчанию

<table border='1' align='center' bordercolor="#999900" class='soft'>
<tr>
<td align='center' class="style3" >Ник</td>
<td align='center' class="style3">Рейтинг</td>
</tr>
<?php

$result= mysql_query ("SELECT id,nick,rating FROM users");
$myrow = mysql_fetch_array ($result);
while (
printf ("

<td align='center'>
%s</td><td><p align='center' > %s </p><td><p align='center' > %s</p> </td><td><p align='center' > %s </p></td>
</tr>
",$myrow["nick"],$myrow["rating"]);
)
{ ($myrow= mysql_fetch_array ($result)); }

?></table>
Тут будет всех пользователей или учеников из таблицы выдёргивать и вставлять в таблицу.

Последний раз редактировалось cheef; 02.05.2010 в 14:15.
cheef вне форума Ответить с цитированием
Старый 02.05.2010, 15:57   #3
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Нет, вы меня не так поняли. Мне надо, запросом выбрать данные об 1 из учеников. И мне нужна не сумма его оценок, а именно рейтинг. Какой он по своим показателям: 1-ый, 2-ой, 3-ий?

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

Но а если таких учеников будет 1000 или 10000? Может можно как нибудь избежать такой нагрузки на БД?
No name. Just Linel.

Последний раз редактировалось Linel; 02.05.2010 в 16:01.
Linel вне форума Ответить с цитированием
Старый 02.05.2010, 16:16   #4
cheef
Форумчанин
 
Регистрация: 16.03.2009
Сообщений: 205
По умолчанию

Данные об 1 учение можно выбрать с помощью ввода id
запрос такой ("SELECT * FROM users WHERE id='1'") или ("SELECT * FROM users WHERE id='$id'"). А по показателям нужно условие создавать.
cheef вне форума Ответить с цитированием
Старый 02.05.2010, 16:37   #5
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Да проблема то не в запросе. Ну допустим выбрал я данные об ученике. Сумма оценок у него n. Как вычислить, какой по рейтингу он будет.

То есть если в базе у меня 3 ученика: Сидоров, сумма оценок - 30; Воробьев, сумма - 25; Петров, сумма - 46.

Если я выбираю Сидорова, то у меня должно показывать, рейтинг: 2-ой.
No name. Just Linel.

Последний раз редактировалось Linel; 02.05.2010 в 16:40.
Linel вне форума Ответить с цитированием
Старый 02.05.2010, 17:05   #6
Vertexxx
Заблокирован
 
Регистрация: 10.04.2010
Сообщений: 145
По умолчанию

как раз-таки дело в запросе

PHP код:

$sql
="SELECT name, SUM(state) `sum` 
         FROM rate 
         GROUP BY name 
         ORDER BY `sum` ASC"
;
$q mysql_query($sql);
$i=0;
while(
$fetch mysql_fetch_assoc($q)){
    echo ++
$i." место: ".$fetch['name'];

или же так
PHP код:

$sql
="SELECT name, SUM(state) `sum` 
         FROM rate 
         GROUP BY name 
         ORDER BY `sum` ASC"
;
$q mysql_query($sql);
$rate = array();
while(
$fetch mysql_fetch_assoc($q)){
    
$rate[]=$fetch['name'];
}
foreach(
$rate as $k=>$v)
{
    echo 
"<option>$v рейтинг ".++$k."</option>";
}
echo 
'</select>'

Последний раз редактировалось Vertexxx; 02.05.2010 в 17:41.
Vertexxx вне форума Ответить с цитированием
Старый 02.05.2010, 17:39   #7
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

Просто мне не надо выводить список всех учеников. Нужно только одного.

Ладно. Сформулирую подругому мою задачу. На сайте пользователю за различные действия начисляют очки. Есть страница просмотра профиля пользователя. Там должны показываться так же его набранные очки + позиция в топе. Вот как вычислить эту позицию??
No name. Just Linel.

Последний раз редактировалось Linel; 02.05.2010 в 17:44.
Linel вне форума Ответить с цитированием
Старый 02.05.2010, 17:45   #8
Vertexxx
Заблокирован
 
Регистрация: 10.04.2010
Сообщений: 145
По умолчанию

Создавай массив по своему желанию и вызывай его ячейку. Тут особо-то и не нужно ничего громоздить - всё легко и просто
Vertexxx вне форума Ответить с цитированием
Старый 02.05.2010, 18:17   #9
Linel
Форумчанин
 
Аватар для Linel
 
Регистрация: 21.02.2009
Сообщений: 372
По умолчанию

А если пользователей очень большое кол-во? Не будет создавать нагрузку на БД?
No name. Just Linel.
Linel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Php + MySQL Чародей Феникс Помощь студентам 0 29.03.2010 22:31
PHP и MySQL D_dd Помощь студентам 1 04.07.2009 22:45