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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2011, 20:49   #1
Delphinchik
Пользователь
 
Регистрация: 10.08.2010
Сообщений: 60
По умолчанию PHP + mysql, вывод записи и её место в рейтинге

Всем привет, есть такая задача:

В table есть поля: id, name, rating
id - int уникальный (10)
name - varchar (100)
rating - int (10)

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

Пример вывода записи:
(Ид: 5, Название: Тролли, Рейтинг: 1500, Позиция: 2)

Как такое можно сделать?

---
Пока придумал только кривой способ запихать всё в цикл и считать
$i=$i+1 пока не дойдет до нужного id, и записать строку с нужным id в перменную, тогда в чем смысл было тревожить всю таблицу...
Delphinchik вне форума Ответить с цитированием
Старый 31.05.2011, 23:23   #2
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Поясните, что значит фраза
[QUOTE]с помощью поля rating вычислить её позицию среди всех в этой таблице[/
QUOTE]

SELECT * FROM table WHERE id = 5
так?
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 01.06.2011, 09:43   #3
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

я вижу два пути
1) переберать всю таблицу циклом for($i=0;$i<count($table);$i++) и условием и при выполнении нужного условия в $i будет лежать ваша нужная позиция.

2) делаем запрос аля SELECT * FROM table WHERE id=5
получаем рейтинг этой зписи пишем в $rating и делаем запрос
SELECT count(id) FROM table WHERE rating > $rating
в ответе получим количство записей в таблице где рейтинг больше чем тот что лежит в $rating, добавляем к нему 1 $rating++; \ $rating = $rating +1; и получаем искомый рейтинг.
но тут есть один момент если у вас есть поля с одинаковым рейтингом то все они будут иметь одну и туже позицию.
если уникально значений в поле рейтинга предусмотрена я бы выбрал способ номер 2
в противном случаем способ номер 1. но если таблица крайне большая встает вопрос о нагрузке при большом количестве запросов к скрипту.
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Старый 01.06.2011, 10:42   #4
Delphinchik
Пользователь
 
Регистрация: 10.08.2010
Сообщений: 60
По умолчанию

Да, mrgrudge, второй способ лучше, т.к запрос должен повторяться каждые 15 секунд и будет не хорошо пользоваться первым вариантом.
Спасибо!
Delphinchik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
php mysql вывод записей Delphinchik JavaScript, Ajax 5 27.01.2011 21:48
что не так с php кдом или с настройками MySQL+PHP Jimmi Помощь студентам 2 27.12.2010 09:03
PHP. Как изменить значение записи в MySQL базе данных SeRhy PHP 4 18.06.2009 12:21