Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   PHP (https://forum.zone-game.info/forumdisplay.php?f=125)
-   -   PHP+MySQL (статистика "TOP сервера") (https://forum.zone-game.info/showthread.php?t=17239)

Jocker 21.12.2011 18:32

PHP+MySQL (статистика "TOP сервера")
 
Привет всем кто читает эту тему. Пожалуйста, не судите строго за простой вопрос, но в поисковиках я не могу найти нужное. Для сайта мне нужно сделать статистику "ТОП сервера". Там будет топ кланов, топ пвп, топ ПК и замки. В общем стандартный набор. Сам вопрос заключается в следующем: Допустим в топ пвп я делаю запрос в БД:
PHP код:

   $query = @mysql_query ("SELECT * FROM characters ORDER BY pvpkills DESC LIMIT 0, 50",$id);
   
$pvp = @mysql_fetch_array ($query); 

а дальше нужно написать команду на вывод результатов. Я вывожу записи в цикле:
PHP код:

   do{
       ++ 
$nom;
       echo 
'<br>'.$nom.' Игрок '.$pvp['char_name'].' Кол-во PvP: '.$pvp['pvpkills'];
      }
while (
$pvp = @mysql_fetch_array ($query)); 

Но нужно заключить строчки в отдельные массивы, чтобы можно было создать таблицу и выводить не сплошным текстом, а отдельно массив в строке. Это нужно для создания эстетического вида сайта. Если не понятно, то скажите, я постараюсь объяснить по- другому.

PROGRAMMATOR 21.12.2011 19:12

Re: PHP+MySQL (статистика "TOP сервера")
 
Строчки, массивы... ничего не понял. Вы о:

PHP код:

    $position 0;
    while (
false !== ($row mysql_fetch_assoc($result)))
    {
        
$htmlBlock .= '
            <div class="player">
                <div class="position">'
.$position++.'</div>
                <div class="nickname">'
.$row['char_name'].'</div>
                <div class="pvp">'
.$row['pvpkills'].'</div>
            </div>
        '
;
    }
    
    echo 
'<div class="playerlist">'.$htmlBlock.'</div>'

? Если оно, то потом еще изучите http://ruseller.com/lessons.php?rub=2&id=1291

Jocker 21.12.2011 19:50

Re: PHP+MySQL (статистика "TOP сервера")
 
Нет, вопрос не в построении таблиц, а в заключении записей об персонажах в массивы. Если объяснять "на пальцах", то получится, что нужно, чтоб получилось $pvp1=запись из БД об игроке, у которого максимальное кол-во pvp, $pvp2=запись о том, кто второй по количеству и т.д. А в табличке потом я сделаю шапку, которая будет делить таблицу на 3 столбца (| место| ник | колво |), а ниже будут идти записи в таблице: строка 1: | №1 | nick | 1000pvp | и т.д..... | №2 | nick2 | 999pvp |. А в скрипте на место "№" будет ++ $nom; "nick" - $pvp1['char_name']; 1000pvp - $pvp1['pvpkills']. Нужно узнать как именно сделать цикл, чтоб он создал массивы $pvp1..........$pvp50 (для 50ти записей топ игроков)

PROGRAMMATOR 21.12.2011 19:54

Re: PHP+MySQL (статистика "TOP сервера")
 
Увы, целесообразности в вашем подходе я не вижу.
$row и так массив и выполняется в цикле перебирая 50 записей...

Jocker 21.12.2011 19:56

Re: PHP+MySQL (статистика "TOP сервера")
 
была конечно идиотская мысль
PHP код:

$pvp2 mysql_query ("SELECT * FROM characters WHERE pvpkills != $pvp1['pvpkills'] ORDER BY pvpkills DESC LIMIT 0, 50",$id

, но это километровый скрипт с 50тью запросами в БД и каждый понимает, что так делать не надо. Но как- вот это для меня пока нерешаемый вопрос. Помогите пожалуйста, спасибо.

Добавлено через 3 минуты
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 154121)
Увы, целесообразности в вашем подходе я не вижу.
$row и так массив и выполняется в цикле перебирая 50 записей...

Допустим для того, чтобы вывести ник лидера я должен вывести $row1[char_name], кол-во $row1[pvpkills], второго- $row2[char_name], $row2[pvpkills]?... То есть мой вопрос заключается в том, как определить 1го, 2го и т.д. игроков из $row

Blast 21.12.2011 20:02

Re: PHP+MySQL (статистика "TOP сервера")
 
Не понятно зачем это выдумывать.
Можно сделать проще - в файлеки вида www.lineage2.com/stats/pvp.html
В нём будет по крону сохраняться либо полностью таблица, либо таблица без шапки.
А в статистике уже делаете что бы то что Вам надо было подгружалось.


PS
Цитата:

Привет всем кто читает эту тему.
Привет.

PROGRAMMATOR 21.12.2011 20:14

Re: PHP+MySQL (статистика "TOP сервера")
 
Цитата:

как определить 1го, 2го и т.д. игроков из $row
$row - содержит информацию о игроке с максимальным количеством PvP баллов, с каждым циклом будет обрабатываться игрок 2, 3, 4, 5 ... 50.

Jocker 21.12.2011 20:32

Re: PHP+MySQL (статистика "TOP сервера")
 
Извините, но я все равное не могу понять. Составил таблицу (тут работаю не с пвп, а с пк):
PHP код:

<table width="100%" border="1">
  <tr>
    <td align="center">Позиция</td>
    <td align="center">Игрок</td>
    <td align="center">Количество PvP</td>
  </tr>
</table>
<table width="100%" border="1">
  <tr>
    <td align="center"><?php echo $num ;?></td>
    <td align="center"><?php do {echo $pk['char_name'];}
    while (
$pk = @mysql_fetch_array ($query));
?></td>
    <td align="center"><?php do {echo $pk['pkkills'];}
    while (
$pk = @mysql_fetch_array ($query));
?></td>
  </tr>
</table>

- ничего толкового не получается...
Blast- страница, которую вы дали выдает ошибку 404

Blast 21.12.2011 20:47

Re: PHP+MySQL (статистика "TOP сервера")
 
Возьмите ЛЮБУЮ цмс под ла2, тот же мой-веб, посмотрите там, найдёте готовый запрос с циклом, зачем создавать колесо раз не можете?

Jocker 21.12.2011 20:52

Re: PHP+MySQL (статистика "TOP сервера")
 
Я совсем недавно изучаю web программирование и не умею разбираться в сложных чужих скриптах (( Ну ладно, щас буду пробовать смотреть.

Добавлено через 1 час 19 минут
Я немного продвинулся. Состряпал скрипт после запроса в БД:
PHP код:

  <?php $name $pk['char_name'];
   
$count $pk['pkkills'];
do {++
$num;
echo 
'<div><table width="100%" border="1">
  <tr>
    <td><?php echo $num;?></td>
    <td><?php echo $name;?></td>
    <td><?php echo $count;?></td>
  </tr>
</table></div>'
;
}
while (
$pk = @mysql_fetch_array ($query));?>

Здесь я присвоил переменным $name и $count соответствующие значения и вывел их прямо в таблице. Получилось, что таблица выводится 7 раз (на сервере 7 чаров, у которых есть очки ПК), но она (таблица) пустая. Подскажите, что я делаю не так? Что сделать, чтобы записи отображались?


Текущее время: 14:49. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot