X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> PHP сортировка пользователей, Нужна помощь по скрипту
CyberForce
CyberForce
Topic Starter сообщение 22.5.2011, 3:05; Ответить: CyberForce
Сообщение #1


Нужно сделать, чтобы пользователи выводились в порядке убывания рейтинга $reiting

Сейчас они выводятся в порядке убывания user_posts

<?php $i = 1; ?>
<?php
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 50");
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;

echo "<tr><td> $i. <a href='profile.php?lookup=$id' class='side'>$name</a></td>
<td width='75%'>
$reiting (Новостей: $news_ofuser; Статей: $articl_ofuser; Постов на форуме: $num_posts; Комментариев: $num_comment)</td></tr>";
$i++;
}

echo"</tr></table>";
?>


Как это сделать?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
danisimo
danisimo
сообщение 22.5.2011, 5:55; Ответить: danisimo
Сообщение #2


в цмкле while ($data = dbarray($sql)) сначала нужные данные загоняем в первый массив и $reiting во второй
делаем array_multisort(первый массив, SORT_NUMERIC, второй массив)
в foreach выводим данные второго массива


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
oldzas
oldzas
сообщение 22.5.2011, 17:14; Ответить: oldzas
Сообщение #3


попробуйте ORDER BY reiting DESC или ASC
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
CyberForce
CyberForce
Topic Starter сообщение 22.5.2011, 17:17; Ответить: 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
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
CyberForce
Topic Starter сообщение 22.5.2011, 18:11; Ответить: CyberForce
Сообщение #6


(blogaster @ 22.5.2011, 17:55) *
а выводишь так:

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
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
CyberForce
Topic Starter сообщение 23.5.2011, 1:29; Ответить: 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>";
?>


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [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


 



RSS Текстовая версия Сейчас: 29.3.2024, 2:04
Дизайн