Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сортировка по числу

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Alien
Отправлено: 20 Марта, 2009 - 19:04:10
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Я написал скрипт, который открывает сокет и считает с другого сервера информацию, мне нужно чтобы в цикле выводилась в сортировке по убыванию того числа, которое я получаю из сокета.
Вот есть часть скрипта:
PHP:
скопировать код в буфер обмена
  1.  
  2.                   $result = mysql_query("SELECT * FROM monitoring ORDER BY id LIMIT 10");
  3.                   $row = mysql_num_rows($result) or die(mysql_error());
  4.                   while($row = mysql_fetch_array($result))
  5.                   {
  6.                   $data = monitor_samp("$row[ip]", "$row[port]", samp, info);
  7.                   echo"<a href='view_serv.php?id=$id'>$data[hostname] | $row[ip] | $data[players]/$data[maxplayers]</a>";
  8.                   }
  9.  

Подскажите как сортировать по массиву $data[players] в порядке убывания
 
 Top
_kT
Отправлено: 20 Марта, 2009 - 20:40:37
Post Id



Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Июль 2008  
Откуда: Новокузнецк


Помог: 0 раз(а)




ORDER BY id DESC


-----
http://www[dot]razbor[dot]org/ - б/у автозапчасти
 
 Top
valenok Модератор
Отправлено: 20 Марта, 2009 - 21:20:43
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




ORDER BY id DESC LIMIT $num , 10


-----
Truly yours, Sasha.
 
My status
 Top
Alien
Отправлено: 21 Марта, 2009 - 08:41:15
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Радость
вы не поняли, значение не хранится в БД, оно постоянно меняется
или как я понял ORDER BY id DESC LIMIT $data['players'] , 10 это будет работать?
если так то вот ошибка:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 10' at line 1

(Отредактировано автором: 21 Марта, 2009 - 08:44:46)

 
 Top
mosquito
Отправлено: 21 Марта, 2009 - 09:00:32
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2009  
Откуда: Киев


Помог: 0 раз(а)




если в цикле while($row = mysql_fetch_array($result)) каждый раз меняется data['players']
то как вариант записывать в масив все данные потом отсортировать массив и вывести


-----
They must find it difficult...
Those who have taken authority as the truth,
Razer than truth as the authority.
 
 Top
Alien
Отправлено: 21 Марта, 2009 - 09:48:57
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




ну тк. а я о чем и говорю
PHP:
скопировать код в буфер обмена
  1.                       <?
  2.                   @include "conf/stats.php";
  3.                   include "conf/config.php";
  4.                   $result = mysql_query("SELECT * FROM monitoring ORDER BY id DESC LIMIT 10");
  5.                   $row = mysql_num_rows($result) or die(mysql_error());
  6.                   $n = 0;
  7.                   while($row = mysql_fetch_array($result))
  8.                   {
  9.                   $data = monitor_samp("$row[ip]", "$row[port]", samp, info);
  10.                         $num = array($data['players']);
  11.                         sort($num);
  12.                         reset($num);
  13.                         while (list($val) = each($num)) {
  14.                         $n++;
  15.                   echo"<a href='view_serv.php?id=$id'>$n. $data[hostname] | $row[ip] | $val/$data[maxplayers]</a>";
  16.                   }
  17.                 }


вот попытался отсортировать по массиву, но видимо что-то не так?

(Отредактировано автором: 21 Марта, 2009 - 09:49:34)

 
 Top
mosquito
Отправлено: 21 Марта, 2009 - 14:50:16
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2009  
Откуда: Киев


Помог: 0 раз(а)




а если так?
CODE (text):
скопировать код в буфер обмена
  1. <?php
  2.         $result = mysql_query("SELECT * FROM monitoring ORDER BY id LIMIT 10");
  3.        
  4.         $temp = array();
  5.         $row = mysql_num_rows($result) or die(mysql_error());
  6.         while($row = mysql_fetch_array($result))
  7.         {
  8.                 $data = monitor_samp("$row[ip]", "$row[port]", samp, info);
  9.                 $temp["<a href='view_serv.php?id=$id'>$data[hostname] | $row[ip] | $data[players]/$data[maxplayers]</a>"] = $data['players'];
  10.         }
  11.        
  12.         asort($temp);
  13.        
  14.         foreach ($temp as $key => $value) print $value."\n";
  15. ?>
  16.  


-----
They must find it difficult...
Those who have taken authority as the truth,
Razer than truth as the authority.
 
 Top
Alien
Отправлено: 21 Марта, 2009 - 17:05:11
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




соответственно и отображаемый результат:
Цитата:
0 58

что-то тут не так, как я понял то 0 это номер, а 58 это $data[players]

(Отредактировано автором: 21 Марта, 2009 - 17:07:21)

 
 Top
mosquito
Отправлено: 21 Марта, 2009 - 19:07:21
Post Id



Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2009  
Откуда: Киев


Помог: 0 раз(а)




как я понял то и 0 и 58 это $data['players']... просто там вывод не $value а $key (привычка ;/)

а вобще как можна знать только примерно догадываясь что такое data

ps и наверно вместо этого <a href='view_serv.php?id=$id'>$data[hostname] | $row[ip] | $data[players]/$data[maxplayers]</a>" :

<a href='view_serv.php?id=".$id."'>$data[hostname] | $row[ip] | $data[players]/$data[maxplayers]</a>"?


-----
They must find it difficult...
Those who have taken authority as the truth,
Razer than truth as the authority.
 
 Top
Alien
Отправлено: 22 Марта, 2009 - 09:38:03
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




а какая разница, результат тот же Однако

в общем я делаю статистику серверов, типа топ 10
вот основная часть кода:
PHP:
скопировать код в буфер обмена
  1.                       <?
  2.                   @include "conf/stats.php";
  3.                   mysql_connect('localhost','****','*****');
  4.                   mysql_select_db('mysql');
  5.                   $result = mysql_query("SELECT * FROM monitoring ORDER BY id DESC LIMIT 10");
  6.                   $row = mysql_num_rows($result) or die(mysql_error());
  7.                   $n = 0;
  8.                   while($row = mysql_fetch_array($result))
  9.                   {
  10.                   $data = monitor_samp("$row[ip]", "$row[port]", samp, info);
  11.                         $n++;
  12.                   echo"<a href='view_serv.php?id=$id'>$n. $data[hostname] | $row[ip] | $data[players]/$data[maxplayers]</a>";
  13.                   }
  14.                   ?>

Я вложил скрин, как выглядит он, обведенные места красным это и есть то число по которому должны они сортироваться в порядке убывания.
Прикреплено изображение (Нажмите для увеличения)
scr.png
 
 Top
Alien
Отправлено: 22 Марта, 2009 - 17:29:38
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




есть предложения? Не понял
 
 Top
valenok Модератор
Отправлено: 22 Марта, 2009 - 19:28:05
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




я не понял ? Ты с сокета читаешь число вида 58
и нужно вывести 10 следующих записей по убыванию (тобишь 58, 57, 56 .. 49) ?

ну вот при $num = 58;

SELECT * FROM monitoring ORDER BY id DESC LIMIT $num , 10

А под ними eho "SELECT * FROM monitoring ORDER BY id DESC LIMIT $num , 10", mysql_error();
Сам запрос еще попробуешь напрямую в ПМА.


-----
Truly yours, Sasha.
 
My status
 Top
Alien
Отправлено: 22 Марта, 2009 - 20:19:33
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




что-то не совсем тебя понял Не понял
у меня да с сокета читается число под переменной data['players'] (не $num) оно может быть любым, не обязательно 58, может и 100 и 200...
 
 Top
Гость
Отправлено: 23 Марта, 2009 - 15:50:15
Post Id


УДАЛЁН










Да хоть 10000 - числовое значение подставляется в любом случае
Если вам нужна постраничная навигация то смотрите общее кеоличетсво записей функцией Count(*) и смотрите можно ли перейти на новую страницу записей в БД
 
 Top
Alien
Отправлено: 23 Марта, 2009 - 18:26:31
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




какая нафиг постраничная навигация, я хочу сделать ТОП десяти серверов, чтобы сортировалось по количеству игроков, в порядке убывания, всё!
Пример:

Место Сервер Игроки

1. Сервер1 50
2. Сервер2 38
3. Сервер3 24
4. Сервер4 20
5. Сервер5 17
6. Сервер6 14
7. Сервер7 12
8. Сервер8 9
9. Сервер9 4
10. Сервер10 2
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB