Что нового

Посчитать цифры

  • Автор темы Автор темы vityan
  • Дата начала Дата начала
V

vityan

Гость
Добрый вечер. Есть мелкая задачка. Не получается вывести значения из базы данных.В базе с персонажами есть поля : имя,время в сети и прочие столбцы.Необходимо сосчитать общее время в сети. Кол-во пользователей вывелось без проблем, а вот циферки не могу сосчитать.кусок кода: Показать / Скрыть текст<?php$where = isset($_GET['pid']) && ctype_digit($_GET['pid']) ? 'where `class` = '.$_GET['pid'] : '';if(isset($_GET['online']))    $where .= $where ? ' and `online` = 1' : 'where `online` = 1';$alls = mysql_fetch_row(mysql_query('SELECT count(*) FROM `char` '.$where));$alls2 = mysql_fetch_row(mysql_query('SELECT sum(*) FROM `char` WHERE `playtime`'));$select = mysql_query('SELECT * FROM `char` '.$where.' ORDER BY `playtime` DESC'.make_limit(100));$a = $page * 100 - 100 + 1;foreach($jobs as $id => $job)    echo '<option value="?id=renewal_02&pid='.$id.'">'.$job.'</option>';?><br/><br/></select> Всего найдено персонажей <span style="color: red"><?php echo $alls[0]; ?></span>. <br/> Общее количество проведённого времени  <span style="color: red"><?php echo $alls2[0]; ?></span>. <br/><br/><br/>  <table align="center" class="chtable2" width="510" cellspacing="1" cellpadding="0" border="0"> <tr>      <th width="10px" nowrap>№</th>      <th width="55px" nowrap>Имя</th>      <th width="10px" nowrap>Статус</th>      <th width="55px" nowrap>Уровень</th>      <th width="55px" nowrap>Время d/h/m/s</th>  </tr><?php while ($show = mysql_fetch_array($select)) {     if($show['online'] == 1) { $status = '<img src=./img/online.gif />'; } else {$status = "<img src=./img/offline.gif />";}     echo '  <tr class="' . ($a % 2 ? 'odd' :  'even' ) . '">    <td> '.$a.'</td>    <td> '.$show['name'].'</td>    <td> <img src="img/'.($show['online'] == 1 ? 'online' : 'offline').'.gif"></td>    <td> '.$show['base_level'].'/'.$show['job_level'].'</td>    <td> '.showPeriod($show['playtime']).'</td>  </tr>';    $a++;}function showPeriod($time) {   return sprintf("%02d:%02d:%02d:%02d", (int)($time/86400),(int)(($time % 86400)/3600), (int)(($time % 3600)/60), (int)($time % 60));}echo "</table>";echo '<div align="center">'.pagenation(ceil($alls[0] / 100), '?id=renewal_02'.(isset($_GET['pid']) ? '&pid='.$_GET['pid'] : '').(isset($_GET['online']) ? '&online' : '')).'</div><br/>';?>
 
Код жесть конечно. функция mysql_fetch_row устаревает. А можно взглянуть на поля в таблице БД?
 
LOST,Да,согласен,жесть:) На столбы глянуть не могу. У чувака привязка по айпи на вход. Запрос идёт с сервера на сервер. На один с скриптами у меня есть доступ, на второй нет:(
 
vityan,поставьте в mysql запросе mysql_error (); И посмотрите почему не выводит. Скорее всего вы пытаетесь суммировать дату со временем
 
LOST,Да, именно её)Чтобы получить общее количество времени.
 
vityan,В каком формате пишется дата в базу? И как рассчитывается?
 
Цитата: vityan$alls2 = mysql_fetch_row(mysql_query('SELECT sum(*) FROM `char` WHERE `playtime`'));Попробуй так $alls2 = mysql_fetch_row(mysql_query('SELECT sum(playtime) as sum(*) FROM char'));
 
BLIDE,Не получилось)LOST,Сейчас доступ к базе получу,гляну) У меня айпи динамика...постоянный доступ не возможен блин и приходится ждать админа))) playtime bigint(20) UNSIGNED Нет Нет Судя по таблице, значения хранятся в секундах599319. А выводится к персонажу как: 06:22:28:39 Время d/h/m/sВот функция занимается разбором:function showPeriod($time) { return sprintf("%02d:%02d:%02d:%02d", (int)($time/86400),(int)(($time % 86400)/3600), (int)(($time % 3600)/60), (int)($time % 60));}
 
vityan,И зачем складывать время, если можно взять минимальное и максимальное значение и высчитать между ними разницу
 
vityan,мне кажется вы извращенцы =) хотя может так надо. Если в секундах, то проще, сделайте как я писал ранее, а потом воспользуйтесь вашей функциейЦитата: BLIDEbigint
 
Всё,заработало, как сделал так : $alls2 = mysql_fetch_row(mysql_query ("SELECT SUM(playtime) FROM `char`"));Ковычки,мать их:)Общее количество проведённого времени 184:13:19:41.
 
Если не секрет, то что за база и персонажи какой игры в ней?
 
Цитата: vityanfunction showPeriod($time) { return sprintf("%02d:%02d:%02d:%02d", (int)($time/86400),(int)(($time % 86400)/3600), (int)(($time % 3600)/60), (int)($time % 60));}
 
SaNcHeS,Да,да...жуть:(Скрипт писался хз кем и когда. Но по виду очень старый уже)
 
vityan,Пока постили целый час сообщения, могли бы уже переписать код 10 раз
 
LOST,Мне это не надо. Не я писал, не мне править.
 
Пожалуйста,закройте. Ответ получил давно:)
 
Верх