Господа гуру PHP программирования нужна ваша помощь на моиом саите хочу открыть конкурс на самова активнова учасника которыи привлек больше рефералов у меня 8 уровнеи рефералов на каждом уровне ограниченое количество рефов нужна сделать статистику первых 3 лидеров по общему числу рефералов с каждова уровня даные должен брать из таблиц БД посоветуите скрипт иль кто напишет сложныи скрипт не нужен проста 3 строки с никами лидеров и общем чеслом рефов
если правильно понял: Code: SELECT * FROM [таблица] ORDER BY [столбец с количеством рефов] DESC LIMIT 3
гм.. тут думаю проще всего сделать так.. в таблице завести три колонки id, id рефа, количество рефоф до восьмого уровня включительно.. при добавлении/удалини пользователей - просто пересчитывать у их родителей количество.. и все.. собственно так задача и решится без проблем.. вроде в реализации не должно возникнуть ничего сложного )
Ага, база с 10к пользователями, каждый раз пересчитывать? Лучше сортировать при выводите(как сказал Sharky) и все.
как раз нет.. у тебя показ будет реже чем добавление/удаление.. верно? небольшой тормоз при этом нормален.. а имея общее количество - показ сделать не тяжело.. если бы не было ограничения на 8 уровней - тогда другой разговор.. а 10к записей.. ну.. это не так и многа на самом деле ) потянет делать нефик )
нет.. это называется оптимизация.. считать на лету обойдется по времени дороже.. если ресурс посещаем..
я пхп не знаю вот ниже таблица полизователеи и их древо table users(id int not null auto_increment, user varchar(15), pass varchar(15), email varchar(100), wmz varchar(13), rang varchar(1), parent varchar(15), parent2 varchar(15), parent3 varchar(15), date date, parent4 varchar(15), primary key(id));"); user - ник полизователя parent- выше стояшии (типа дистребиютер) rang- уровени полизователя id - тут думаю всео понятно может кто напишет код с меня максимальный +
гм.. чегото мне структура чесгря не совсем нравится.. т.е. я могу добавить еще одно поле для пересчета как говорил ) Писать полностью не буду.. помочь могу.. т.к. насчет писать тут и так .. желающих к сожалению более чем достаточно (( :
Просто смотри .. добавь одно поле с целым числом.. на добавление повесь по родителям прибавить один.. на удаление - отнять один, Ну и отдельно один скрипт чтоб подсчитать сейчас общую сумму у каждого.. ((ну и всё.. после этого вывести самых активных уже не проблема )))
вот вот как идеот подщот статьстьки может переделать и этова Code: <tr> <th width="121" align="left" scope="row"> Участников - <? require ("connectdb.inc.php"); $sql=mysql_query("select*from users"); $num=mysql_num_rows($sql); $sql1=mysql_query("select*from orders"); $num_nord=mysql_num_rows($sql1); $sql2=mysql_query("select*from orders2"); $old_ord=mysql_num_rows($sql2); $sql3 = mysql_query("SELECT * FROM `users` where rang='0'"); $ur0=mysql_num_rows($sql3); $sql4 = mysql_query("SELECT * FROM `users` where rang='1'"); $ur1=mysql_num_rows($sql4); $sql5 = mysql_query("SELECT * FROM `users` where rang='2'"); $ur2=mysql_num_rows($sql5); $sql6 = mysql_query("SELECT * FROM `users` where rang='3'"); $ur3=mysql_num_rows($sql6); $sql7 = mysql_query("SELECT * FROM `users` where rang='4'"); $ur4=mysql_num_rows($sql7); $sql8 = mysql_query("SELECT * FROM `users` where rang='5'"); $ur5=mysql_num_rows($sql8); $sql9 = mysql_query("SELECT * FROM `users` where rang='6'"); $ur6=mysql_num_rows($sql9); $sql10 = mysql_query("SELECT * FROM `users` where rang='7'"); $ur7=mysql_num_rows($sql10); $sql11 = mysql_query("SELECT * FROM `users` where rang='8'"); $ur8=mysql_num_rows($sql11); $sql12=mysql_query("select*from users where date between subdate(now(), interval 0 day) and now()"); $row00=mysql_num_rows($sql12); ?></th> <th width="43" align="right" scope="row"> <?=$num;?> </th> </tr> <tr> <th colspan="2" align="right" scope="row"></th> </tr> <tr> <th colspan="2" align="right" scope="row"></th> </tr> <tr> <th align="left" scope="row"> Новых заказов -</th> <th align="right" scope="row"> <?=$num_nord;?> </th> </tr> <tr> <th colspan="2" align="right" scope="row"></th> </tr> <tr> <th align="left" scope="row"> Подтв. заказов -</th> <th align="right" scope="row"> <?=$old_ord;?> </th> </tr> <tr> <th colspan="2" scope="row"></th> </tr> <tr> <th colspan="2" scope="row"></th> </tr> <tr> <th align="left" scope="row"> Уровень 0 -</th> <th align="right" scope="row"> <?=$ur0;?> </th> </tr> <tr> <th align="left" scope="row"> Уровень 1 -</th> <th align="right" scope="row"> <?=$ur1;?> </th> </tr> <tr> <th align="left" scope="row"> Уровень 2 -</th> <th align="right" scope="row"> <?=$ur2;?> </th> </tr> <tr> <th align="left" scope="row"> Уровень 3 -</th> <th align="right" scope="row"> <?=$ur3;?> </th> </tr> <tr> <th align="left" scope="row"> Уровень 4 -</th> <th align="right" scope="row"> <?=$ur4;?> </th> </tr> <tr> <th align="left" scope="row"> Уровень 5 -</th> <th align="right" scope="row"> <?=$ur5;?> </th> </tr> <tr> <th align="left" scope="row"> Уровень 6 -</th> <th align="right" scope="row"> <?=$ur6;?> </th> </tr> <tr> <th align="left" scope="row"> Уровень 7 -</th> <th align="right" scope="row"> <?=$ur7;?> </th> </tr> <tr> <th align="left" scope="row"> Уровень 8 -</th> <th align="right" scope="row"> <?=$ur8;?> </th> </tr>
Насчет вот этих функций.. эта вообще жесть ))) Я собсно про тоже .. что ничего городить не надо будет.. есил предварительно написать как я сказал.. тогда запрос на рейтинг вообще будет типа HTML: select * from users order by `название_поля` asc limit 10 или тебе непосредственно добавление/удаление надо? ))Тебе вроде общий рейтинг нужен был? Вывести топ только самых активных у кого со всех уровней больше всего народу и больше ничего?