Помощник
|
PHP сортировка пользователей, Нужна помощь по скрипту |
CyberForce
|
Сообщение
#1
|
||
|
|
||
|
|||
danisimo |
22.5.2011, 5:55;
Ответить: danisimo
Сообщение
#2
|
|
в цмкле while ($data = dbarray($sql)) сначала нужные данные загоняем в первый массив и $reiting во второй
делаем array_multisort(первый массив, SORT_NUMERIC, второй массив) в foreach выводим данные второго массива -------------------- |
|
|
oldzas |
22.5.2011, 17:14;
Ответить: oldzas
Сообщение
#3
|
|
попробуйте ORDER BY reiting DESC или ASC
|
|
|
CyberForce
|
Сообщение
#4
|
|
Что-то не делается...
<?php $i = 1; echo "<table width='96%' cellpadding='0' cellspacing='0'>"; $sql = dbquery("SELECT * FROM ".$db_prefix."users WHERE user_level>='101' ORDER BY user_posts DESC,user_level DESC LIMIT 20"); while ($data = dbarray($sql)) { $name = $data['user_name']; $id = $data['user_id']; //число новостей и статей $news_ofuser = dbcount('(news_id)','news','news_name='.$id); $articl_ofuser = dbcount('(article_id)','articles','article_name='.$id); $result = dbquery("SELECT user_posts FROM ".$db_prefix."users WHERE user_id='".$data['user_id']."'"); $data2 = dbarray($result); $num_posts = $data2['user_posts']; $num_comment = dbcount("(comment_id)", "comments", "comment_name='".$data['user_id']."'"); $massiv1[$i] = array ("nameuser"=>$name,"userid"=>$id,"kolnews"=>$news_ofuser,"kolart"=>$articl_ofuser,"postsforum"=>$num_posts,"postscom"=>$num_comment); $reiting = $news_ofuser*20+$articl_ofuser*30+$num_posts+$num_comment*2; $massiv2[$i] = array ("ratinguser"=>$reiting); $i++; } array_multisort($massiv2, SORT_DESC) foreach ($massiv2 as $b) { echo "$b<br>"; } echo"</tr></table>"; ?> я вообще запутался... Вроде как должно выводить рейтинг в порядке убывания сейчас, но не выводит. А как выводить имя пользователя и рядом с ним его рейтинг? Можно подробнее расписать? |
|
|
blogaster |
22.5.2011, 17:55;
Ответить: blogaster
Сообщение
#5
|
|
а выводишь так:
foreach ($massiv2 as $key=>$b) { echo $massiv1[$key] ['nameuser']."- ".$b['ratinguser']."<br>"; } Сообщение отредактировал blogaster - 22.5.2011, 17:56 |
|
|
CyberForce
|
Сообщение
#6
|
|
а выводишь так: foreach ($massiv2 as $key=>$b) { echo $massiv1[$key] ['nameuser']."- ".$b['ratinguser']."<br>"; } что-то не выводится ничего... <?php $i = 1; echo "<table width='96%' cellpadding='0' cellspacing='0'>"; $sql = dbquery("SELECT * FROM ".$db_prefix."users WHERE user_level>='101' ORDER BY user_posts DESC,user_level DESC LIMIT 20"); while ($data = dbarray($sql)) { $name = $data['user_name']; $id = $data['user_id']; //число новостей и статей $news_ofuser = dbcount('(news_id)','news','news_name='.$id); $articl_ofuser = dbcount('(article_id)','articles','article_name='.$id); $result = dbquery("SELECT user_posts FROM ".$db_prefix."users WHERE user_id='".$data['user_id']."'"); $data2 = dbarray($result); $num_posts = $data2['user_posts']; $num_comment = dbcount("(comment_id)", "comments", "comment_name='".$data['user_id']."'"); $massiv1[$i] = array ("nameuser"=>$name,"userid"=>$id,"kolnews"=>$news_ofuser,"kolart"=>$articl_ofuser,"postsforum"=>$num_posts,"postscom"=>$num_comment); $reiting = $news_ofuser*20+$articl_ofuser*30+$num_posts+$num_comment*2; $massiv2[$i] = array ("ratinguser"=>$reiting); $i++; } array_multisort($massiv2, SORT_DESC) foreach ($massiv2 as $key=>$b) { echo $massiv1[$key] ['nameuser']."- ".$b['ratinguser']."<br>"; } } echo"</tr></table>"; ?> вот так сейчас скрипт выглядит |
|
|
danisimo |
22.5.2011, 20:09;
Ответить: danisimo
Сообщение
#7
|
|
$massiv2[$i] = array ("ratinguser"=>$reiting); массив должен содержать числовые значения а не вложеный массив, то есть $massiv2[$i] = $reiting; array_multisort($massiv2, SORT_DESC) нужно делать так, чтобы и второй массив сортировался по первому array_multisort($massiv2, SORT_DESC,$massiv1); и добавьте после while ($data = dbarray($sql)) { echo "+"; чтобы знать что выборка из базы не нулевая -------------------- |
|
|
CyberForce
|
Сообщение
#8
|
|
|
все равно не работает... Можете указать точно, где что поменять? Или сразу добавить в код
<?php $i = 1; echo "<table width='96%' cellpadding='0' cellspacing='0'>"; $sql = dbquery("SELECT * FROM ".$db_prefix."users WHERE user_level>='101' ORDER BY user_posts DESC,user_level DESC LIMIT 20"); while ($data = dbarray($sql)) { echo "+"; $name = $data['user_name']; $id = $data['user_id']; //число новостей и статей $news_ofuser = dbcount('(news_id)','news','news_name='.$id); $articl_ofuser = dbcount('(article_id)','articles','article_name='.$id); $result = dbquery("SELECT user_posts FROM ".$db_prefix."users WHERE user_id='".$data['user_id']."'"); $data2 = dbarray($result); $num_posts = $data2['user_posts']; $num_comment = dbcount("(comment_id)", "comments", "comment_name='".$data['user_id']."'"); $massiv1[$i] = array ("nameuser"=>$name,"userid"=>$id,"kolnews"=>$news_ofuser,"kolart"=>$articl_ofuser,"postsforum"=>$num_posts,"postscom"=>$num_comment); $reiting = $news_ofuser*20+$articl_ofuser*30+$num_posts+$num_comment*2; $massiv2[$i] = $reiting; $i++; } array_multisort($massiv2, SORT_DESC,$massiv1); foreach ($massiv2 as $key=>$b) { echo $massiv1[$key] ['nameuser']."- ".$b."<br>"; } } echo"</tr></table>"; ?> а можно ведь запихнуть все в 1 массив (и имя юзера и количество новостей и рейтинг), а потом отсортировать по рейтингу... только как это сделать и как вывести потом... Все... Я сделал все... Вот конечный результат. Все работает. <?php $i = 1; echo "<table width='96%' cellpadding='0' cellspacing='0'>"; $sql = dbquery("SELECT * FROM ".$db_prefix."users WHERE user_level>='101' ORDER BY user_posts DESC,user_level DESC LIMIT 200"); while ($data = dbarray($sql)) { $name = $data['user_name']; $id = $data['user_id']; //число новостей и статей $news_ofuser = dbcount('(news_id)','news','news_name='.$id); $articl_ofuser = dbcount('(article_id)','articles','article_name='.$id); $result = dbquery("SELECT user_posts FROM ".$db_prefix."users WHERE user_id='".$data['user_id']."'"); $data2 = dbarray($result); $num_posts = $data2['user_posts']; $num_comment = dbcount("(comment_id)", "comments", "comment_name='".$data['user_id']."'"); $reiting = $news_ofuser*20+$articl_ofuser*30+$num_posts+$num_comment*2; if ($num_posts > 10) { $massiv1[$i] = array ("nameuser"=>$name,"userid"=>$id,"kolnews"=>$news_ofuser,"kolart"=>$articl_ofuser,"postsforum"=>$num_posts,"postscom"=>$num_comment); $massiv2[$i] = $reiting; $i++; } } $i=$i-1; array_multisort($massiv2, SORT_ASC,$massiv1); $numer=1; while ($i--) { echo "<tr><td> $numer. <a href='profile.php?lookup=".$massiv1[$i]['userid']."'>".$massiv1[$i]['nameuser']."</a></td> <td width='75%'> ".$massiv2[$i]." (Постов на форуме: ".$massiv1[$i]['postsforum']."; Комментариев: ".$massiv1[$i]['postscom']."; Новостей: ".$massiv1[$i]['kolnews']."; Статей: ".$massiv1[$i]['kolart'].")</td></tr>"; $numer++; } echo"</tr></table>"; ?>
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое | 5 | CULA | 3291 | 19.12.2023, 18:55 автор: CULA |
|
Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery Разработка сайтов и сервисов под-ключ |
0 | alexey | 1170 | 24.11.2023, 14:46 автор: alexey |
|
Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP) | 56 | qpPeW | 44765 | 19.7.2023, 10:03 автор: qpPeW |
|
Есть спецы по php/laravel? | 3 | Mixatraider | 1856 | 26.5.2023, 20:48 автор: Mixatraider |
|
Опытный PHP\Python разработчик в поиске интересных задач | 6 | daikzlex | 3360 | 25.5.2023, 13:55 автор: daikzlex |
Текстовая версия | Сейчас: 29.3.2024, 2:04 |