PDA

Просмотр полной версии : Господа гуру PHP программирования нужна ваша помощь


mss-s
30.03.2009, 17:37
Господа гуру PHP программирования нужна ваша помощь
на моиом саите хочу открыть конкурс на самова активнова учасника которыи привлек больше рефералов
у меня 8 уровнеи рефералов на каждом уровне ограниченое количество рефов
нужна сделать статистику первых 3 лидеров по общему числу рефералов с каждова уровня
даные должен брать из таблиц БД

посоветуите скрипт иль кто напишет сложныи скрипт не нужен проста 3 строки с никами лидеров и общем чеслом рефов

Sharky
30.03.2009, 17:54
если правильно понял:
SELECT * FROM [таблица] ORDER BY [столбец с количеством рефов] DESC LIMIT 3

KaZ@NoVa
30.03.2009, 18:06
гм.. тут думаю проще всего сделать так..
в таблице завести три колонки id, id рефа, количество рефоф до восьмого уровня включительно..

при добавлении/удалини пользователей - просто пересчитывать у их родителей количество.. и все.. собственно так задача и решится без проблем..

вроде в реализации не должно возникнуть ничего сложного )

Chaak
30.03.2009, 18:09
гм.. тут думаю проще всего сделать так..
в таблице завести три колонки 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

Sharky
30.03.2009, 18:26
тем более ты же не все 10к будешь пересчитывать.. а только родителей.. а их на порядок меньше ) :D :D :D :D
это как жрать задницей

KaZ@NoVa
30.03.2009, 18:32
нет.. это называется оптимизация..
считать на лету обойдется по времени дороже.. если ресурс посещаем..

mss-s
30.03.2009, 19:07
скрипт должен обновлять даные раз в сутки

Pashkela
30.03.2009, 19:08
http://cronjob.ru/

KaZ@NoVa
30.03.2009, 19:20
ну ды.. либо cron, либо агентов делать ))
крон явно лучше

mss-s
30.03.2009, 19:27
я пхп не знаю

вот ниже таблица полизователеи и их древо

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:

Sharky
30.03.2009, 19:43
меня пугает слово "Полизователи" ... чё они лижут..чё у тя там за партнёрка интересно

KaZ@NoVa
30.03.2009, 19:46
Просто смотри .. добавь одно поле с целым числом..
на добавление повесь по родителям прибавить один..
на удаление - отнять один,

Если mysql 4 - использую OR, если mysql5 - быстрее будет работать IN
обойтись можно будет всего одним запросом.. на самом деле..

Ну и отдельно один скрипт чтоб подсчитать сейчас общую сумму у каждого..

((ну и всё.. после этого вывести самых активных уже не проблема ))) ;)

mss-s
30.03.2009, 19:54
вот вот как идеот подщот статьстьки может переделать и этова

<tr>
<th width="121" align="left" scope="row">&nbsp;Участников -
<?
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">&nbsp;Новых заказов -</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">&nbsp;Подтв. заказов -</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">&nbsp;Уровень 0 -</th>
<th align="right" scope="row">
<?=$ur0;?>
</th>
</tr>
<tr>
<th align="left" scope="row">&nbsp;Уровень 1 -</th>
<th align="right" scope="row">
<?=$ur1;?>
</th>
</tr>
<tr>
<th align="left" scope="row">&nbsp;Уровень 2 -</th>
<th align="right" scope="row">
<?=$ur2;?>
</th>
</tr>
<tr>
<th align="left" scope="row">&nbsp;Уровень 3 -</th>
<th align="right" scope="row">
<?=$ur3;?>
</th>
</tr>
<tr>
<th align="left" scope="row">&nbsp;Уровень 4 -</th>
<th align="right" scope="row">
<?=$ur4;?>
</th>
</tr>
<tr>
<th align="left" scope="row">&nbsp;Уровень 5 -</th>
<th align="right" scope="row">
<?=$ur5;?>
</th>
</tr>
<tr>
<th align="left" scope="row">&nbsp;Уровень 6 -</th>
<th align="right" scope="row">
<?=$ur6;?>
</th>
</tr>
<tr>
<th align="left" scope="row">&nbsp;Уровень 7 -</th>
<th align="right" scope="row">
<?=$ur7;?>
</th>
</tr>
<tr>
<th align="left" scope="row">&nbsp;Уровень 8 -</th>
<th align="right" scope="row">
<?=$ur8;?>
</th>
</tr>

mss-s
30.03.2009, 20:00
ту подшитоваеца сколика на и на каком уровне есть полизователи

KaZ@NoVa
30.03.2009, 20:15
Насчет вот этих функций.. эта вообще жесть )))
Я собсно про тоже .. что ничего городить не надо будет.. есил предварительно написать как я сказал..
тогда запрос на рейтинг вообще будет типа

select * from users order by `название_поля` asc limit 10

или тебе непосредственно добавление/удаление надо? ))Тебе вроде общий рейтинг нужен был?
Вывести топ только самых активных у кого со всех уровней больше всего народу и больше ничего?

mss-s
30.03.2009, 20:19
Вывести топ только самых активных у кого со всех уровней больше всего народу и больше ничего

mss-s
30.03.2009, 20:21
чтоб показал самых активных гдета 4 - 5 активных пользователей

mss-s
30.03.2009, 20:24
не болише 5 проста ник и количество

KaZ@NoVa
30.03.2009, 20:26
чтоб показал самых активных гдета 4 - 5 активных пользователей
не болише 5 проста ник и количество

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

Смотри.. все данные у тебя уже есть..
просто приплюсовать при добавлении надо всем родителям по одному..
перед удалением убрать по одному тоже у всех родитлеей..
при выводе просто отсортировать по количеству (которое собственно и подсчитываешь) и вывести столько в топ, сколько тебе надо )
хотя я уже чесгря и не знаю что может быть тут ..

вроде же объяснил.. а непосредственно кодить сирано не буду )

mss-s
30.03.2009, 21:45
ребята может кто покажет как а то, я не знаю ни пхп ни mysql
проста напешите какие команды и куда ставить а далише я уш канибуть сам
проста в мне обесняите, а я нефига не понимаю от куда куда
смысол ясен но как релизавать всео это на практике
может дадите пример какои
мне нужна это дело севодня закончить на краиняк завтра

KaZ@NoVa
30.03.2009, 22:10
(: Хуею сразу бы сказал... LOL
Забей.

mss-s
30.03.2009, 22:52
у меня толька 1$ на кошелке и еслиб была болише яб сразу заказал у кавонить и всио, если зделаите за долар то я с радостию

Sharky
31.03.2009, 01:34
нет.. это называется оптимизация..
считать на лету обойдется по времени дороже.. если ресурс посещаем..
ну да...я в саусе видел серию про ректальное переваривание...типа полезней и всё такое

Sharky
31.03.2009, 01:35
ребята может кто покажет как а то, я не знаю ни пхп ни mysql
проста напешите какие команды и куда ставить а далише я уш канибуть сам
проста в мне обесняите, а я нефига не понимаю от куда куда
смысол ясен но как релизавать всео это на практике
может дадите пример какои
мне нужна это дело севодня закончить на краиняк завтра
php.net и да прибудет с тобой БОГ

mss-s
31.03.2009, 16:25
может дадите какои небуть скрипт где есть штота подобное