Просмотр полной версии : Сортировка дб и прием в флеш!
deman455
26.05.2010, 16:01
У меня есть большая база данных. В ней написаны ID-ы игроков, и количество набранных очков.
Как мне сортировать базу, и вывести это в флеш ТОП 100 участников, ТОП 100 определять по количеству очков...
Ну сделай сортировку при запросе. Там где идет SELECT, в конце укажи что-то типа ORDER BY count DESC. (То есть выборки с большими count будут вверху).
Потом из получившегося запроса выбери только первые 100 массивов для разбора и передачи флешке.
Допустим в таблице поле ника - nickname, поле очков - count, тогда:
$qResult = mysql_query("SELECT nickname, count FROM table_name ORDER BY count DESC");
$nRows = mysql_num_rows($qResult);
if ($nRows < 100)
{
$total = $nRows;
}
else
{
$total = 100;
}
$result = "";
for ($i = 0; $i < $total; $i++)
{
$n = $i + 1;
$row = mysql_fetch_array($qResult);
$result .= "nickname".$n."=".$row['nickname']."&count".$n."=".$row['count']."&";
}
echo $result;
При запросе из флешки этого скрипта LoadVars должна будет получить строку вроде
nickname1=vasia&count1=6767&nickname2=fedor&count2=5899&...
Разбираешь ее внутри onLoad и выводишь куда надо. Если непонятно как такую строку разобрать, это вопрос уже в другую ветку.
В скрипте я опустил процедуру подключения к БД.
В деталях мог ошибиться, разумеется, не проверял, но принцип, думаю ясен.
Если непонятно, посмотри синтаксис sql-оператора ORDER BY.
deman455
27.05.2010, 00:18
mooncar, Т.е. получается, что php запрашивает базу данных 100 раз?? ($total)
Это не будет грузить сайт/хостинг ? Если этот запрос будут одновременно 3 человека посылать...
Добавлено через 1 минуту
А всё понял, php один раз считывает и потом в себе все что надо делает. Спасибо
Добавлено через 6 минут
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource ?
deman455
27.05.2010, 00:28
Всё разобрался! Не то написал просто.
Можно сразу DESC LIMIT 100 указать.
deman455
27.05.2010, 00:54
udaaff, а php случайно с DESC LIMIT 100 не считает переменные не в сортированном виде ?
SELECT nickname, count FROM table_name ORDER BY count DESC LIMIT 100
Отсортирует по полю count и вернет первые 100 отсортированных записей в порядке убывания.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.