Просмотр полной версии : Господа гуру PHP программирования нужна ваша помощь
Господа гуру PHP программирования нужна ваша помощь
на моиом саите хочу открыть конкурс на самова активнова учасника которыи привлек больше рефералов
у меня 8 уровнеи рефералов на каждом уровне ограниченое количество рефов
нужна сделать статистику первых 3 лидеров по общему числу рефералов с каждова уровня
даные должен брать из таблиц БД
посоветуите скрипт иль кто напишет сложныи скрипт не нужен проста 3 строки с никами лидеров и общем чеслом рефов
если правильно понял:
SELECT * FROM [таблица] ORDER BY [столбец с количеством рефов] DESC LIMIT 3
KaZ@NoVa
30.03.2009, 18:06
гм.. тут думаю проще всего сделать так..
в таблице завести три колонки id, id рефа, количество рефоф до восьмого уровня включительно..
при добавлении/удалини пользователей - просто пересчитывать у их родителей количество.. и все.. собственно так задача и решится без проблем..
вроде в реализации не должно возникнуть ничего сложного )
гм.. тут думаю проще всего сделать так..
в таблице завести три колонки id, id рефа, количество рефоф до восьмого уровня включительно..
при добавлении/удалини пользователей - просто пересчитывать у их родителей количество.. и все.. собственно так задача и решится без проблем..
вроде в реализации не должно возникнуть ничего сложного )
Ага, база с 10к пользователями, каждый раз пересчитывать? Лучше сортировать при выводите(как сказал Sharky) и все.
KaZ@NoVa
30.03.2009, 18:15
как раз нет.. у тебя показ будет реже чем добавление/удаление.. верно? ;) небольшой тормоз при этом нормален..
а имея общее количество - показ сделать не тяжело..
если бы не было ограничения на 8 уровней - тогда другой разговор..
а 10к записей.. ну.. это не так и многа на самом деле )
потянет делать нефик )
KaZ@NoVa
30.03.2009, 18:17
тем более ты же не все 10к будешь пересчитывать.. а только родителей.. а их на порядок меньше ) :D :D :D :D
тем более ты же не все 10к будешь пересчитывать.. а только родителей.. а их на порядок меньше ) :D :D :D :D
это как жрать задницей
KaZ@NoVa
30.03.2009, 18:32
нет.. это называется оптимизация..
считать на лету обойдется по времени дороже.. если ресурс посещаем..
скрипт должен обновлять даные раз в сутки
Pashkela
30.03.2009, 19:08
http://cronjob.ru/
KaZ@NoVa
30.03.2009, 19:20
ну ды.. либо cron, либо агентов делать ))
крон явно лучше
я пхп не знаю
вот ниже таблица полизователеи и их древо
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 - тут думаю всео понятно
может кто напишет код с меня максимальный +
Pashkela
30.03.2009, 19:29
может кто напишет код с меня максимальный +
:D :D :D
KaZ@NoVa
30.03.2009, 19:42
гм.. чегото мне структура чесгря не совсем нравится..
т.е. я могу добавить еще одно поле для пересчета как говорил )
Писать полностью не буду.. помочь могу..
т.к. насчет писать тут и так .. желающих к сожалению более чем достаточно :(((
Чесгря устаю дико от написания )
слишком сча дофига проектов свалилось.. сезон млин :(
: :rolleyes:
меня пугает слово "Полизователи" ... чё они лижут..чё у тя там за партнёрка интересно
KaZ@NoVa
30.03.2009, 19:46
Просто смотри .. добавь одно поле с целым числом..
на добавление повесь по родителям прибавить один..
на удаление - отнять один,
Если mysql 4 - использую OR, если mysql5 - быстрее будет работать IN
обойтись можно будет всего одним запросом.. на самом деле..
Ну и отдельно один скрипт чтоб подсчитать сейчас общую сумму у каждого..
((ну и всё.. после этого вывести самых активных уже не проблема ))) ;)
вот вот как идеот подщот статьстьки может переделать и этова
<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>
ту подшитоваеца сколика на и на каком уровне есть полизователи
KaZ@NoVa
30.03.2009, 20:15
Насчет вот этих функций.. эта вообще жесть )))
Я собсно про тоже .. что ничего городить не надо будет.. есил предварительно написать как я сказал..
тогда запрос на рейтинг вообще будет типа
select * from users order by `название_поля` asc limit 10
или тебе непосредственно добавление/удаление надо? ))Тебе вроде общий рейтинг нужен был?
Вывести топ только самых активных у кого со всех уровней больше всего народу и больше ничего?
Вывести топ только самых активных у кого со всех уровней больше всего народу и больше ничего
чтоб показал самых активных гдета 4 - 5 активных пользователей
не болише 5 проста ник и количество
KaZ@NoVa
30.03.2009, 20:26
чтоб показал самых активных гдета 4 - 5 активных пользователей
не болише 5 проста ник и количество
Ну да.. хоть что собственно.. не в этом суть..
главное же как удобнее и быстрее сделать )
алгоритм вроде описал )
Смотри.. все данные у тебя уже есть..
просто приплюсовать при добавлении надо всем родителям по одному..
перед удалением убрать по одному тоже у всех родитлеей..
при выводе просто отсортировать по количеству (которое собственно и подсчитываешь) и вывести столько в топ, сколько тебе надо )
хотя я уже чесгря и не знаю что может быть тут ..
вроде же объяснил.. а непосредственно кодить сирано не буду )
ребята может кто покажет как а то, я не знаю ни пхп ни mysql
проста напешите какие команды и куда ставить а далише я уш канибуть сам
проста в мне обесняите, а я нефига не понимаю от куда куда
смысол ясен но как релизавать всео это на практике
может дадите пример какои
мне нужна это дело севодня закончить на краиняк завтра
KaZ@NoVa
30.03.2009, 22:10
(: Хуею сразу бы сказал... LOL
Забей.
у меня толька 1$ на кошелке и еслиб была болише яб сразу заказал у кавонить и всио, если зделаите за долар то я с радостию
нет.. это называется оптимизация..
считать на лету обойдется по времени дороже.. если ресурс посещаем..
ну да...я в саусе видел серию про ректальное переваривание...типа полезней и всё такое
ребята может кто покажет как а то, я не знаю ни пхп ни mysql
проста напешите какие команды и куда ставить а далише я уш канибуть сам
проста в мне обесняите, а я нефига не понимаю от куда куда
смысол ясен но как релизавать всео это на практике
может дадите пример какои
мне нужна это дело севодня закончить на краиняк завтра
php.net и да прибудет с тобой БОГ
может дадите какои небуть скрипт где есть штота подобное
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot