Дата: 2011-02-18 13:12:46
Комментариев: 0
В прошлой статье мы настроили получение суммы на счете, теперь настроим сбор и сохранение этой информации в БД Mysql и оформим вывод данных в веб-морде в виде красивых графиков от Google Chart. Начнем с создания таблицы в mysql:
cat balans.sql
--
-- Структура таблицы `balans`
--
 
CREATE TABLE IF NOT EXISTS `balans` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `balans` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
  `delta` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `balans` (`balans`),
  KEY `delta` (`delta`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

Хотите позвонить своим друзья, родственникам или же деловым коллегам, вам всего лишь нужен бесплатный скайп, подключите наушники и микрофон, и можете звонить.
Импортируйте файл balans.sql через phpMyAdmin. Теперь нам нужно заполнять нашу БД данными и для этого нам поможет такой скрипт:
cat balans_add.php
<?
$hostname = "localhost"; 
$username = "имя_пользователя"; 
$password = "пароль"; 
$dbName = "название_БД"; 
$userstable = "balans";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); 
mysql_select_db($dbName) or die(mysql_error());  
 
$date=date("Y-m-d H:i:s");
$balans = exec("/путь/до/файла/ATsend.py | grep OCTATOK | awk '{ print $3 }'");
 
if ($balans == NULL){
$balans = 0;
}
 
//Вычисляем разницу балансов
$query = "SELECT * FROM $userstable ORDER BY `date` ASC LIMIT 1";
$result = mysql_query ($query);
$row = mysql_fetch_array($result, MYSQL_NUM);
$delta = $balans - $row[2];
 
//Заносим данные в БД
$q = "INSERT INTO $userstable(`date`, `balans`, `delta`) VALUES('{$date}', '{$balans}', '{$delta}')";
$s = mysql_query($q) or die(mysql_error());
mysql_close();
?>

Добавим этот скрипт в крон для автозапуска каждый день в 00:00 ч или установите другое время когда ваш телефон будет рядом с компом.
0 0 * * * `/usr/bin/php /путь/до/файла/balans_add.php` >/dev/null 2>&1

Осталось прикрутить веб-морду для отображения статистической информации по нашему балансу:
cat index.php
<?
$hostname = "localhost"; 
$username = "имя_пользователя"; 
$password = "пароль"; 
$dbName = "название_БД"; 
$userstable = "balans";
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); 
mysql_select_db($dbName) or die(mysql_error());  
 
$query = "SELECT * FROM $userstable ORDER BY `date` ASC LIMIT 30";
$result = mysql_query ($query);
 
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
 
$data .= $row[2]." ";
 
$time = strtotime($row[1]);
$dayMonth .= date('d.m', $time)." ";
}
 
//Максимальное значение
$query_max = "SELECT MAX(ceil(`balans`)) FROM $userstable";
$result_max = mysql_query ($query_max);
$row_max = mysql_fetch_array($result_max, MYSQL_NUM);
 
//Сумма пополнений
$query_sum_p = "SELECT SUM(`delta`) FROM $userstable WHERE `delta` > 0";
$result_sum_p = mysql_query ($query_sum_p);
$row_sum_p = mysql_fetch_array($result_sum_p, MYSQL_NUM);
 
//Всего потратили
$query_sum_m = "SELECT SUM(`delta`) FROM $userstable WHERE `delta` < 0";
$result_sum_m = mysql_query ($query_sum_m);
$row_sum_m = mysql_fetch_array($result_sum_m, MYSQL_NUM);
 
 
 
$arr = explode(" ", $data);
$len = count($arr);
$string = "";
for($i=0; $i<$len; $i++)
{
  if($i < $len - 2) $string.= $arr[$i].",";
  else $string.= $arr[$i];
}
 
$arr2 = explode(" ", $dayMonth);
$len2 = count($arr2);
$string2 = "";
for($i2=0; $i2<$len2; $i2++)
{
  if($i2 < $len2 - 2) $string2.= $arr2[$i2]."|";
  else $string2.= $arr2[$i2];
}
 
?>
<html>
<head>
<style type="text/css">
.tablediv {
display:  table;
width:275px;
font-size: 9pt;
color: #fff;
background-color:#eee;
border:1px solid  #666666;
border-spacing:5px;/*cellspacing:poor IE support for  this*/
border-collapse:separate;
}
.celldiv {
float:left;/*fix for  buggy browsers*/
display:  table-cell;
width:150px;
padding:3px;
background-color:#ccc;
}
.celldiv2 {
float:left;/*fix for  buggy browsers*/
display:  table-cell;
width:100px;
padding:3px;
background-color:#958B8B;
}
.rowdiv  {
display:  table-row;
width:auto;
}
</style>
<title>Баланс мобильного телефона</title>
</head>
<body>
<img src=https://chart.googleapis.com/chart?cht=bvg&chd=t:<? echo $string;?>&chxt=x&chs=600x200&chm=N,000000,0,,10&chxl=0:|<? echo $string2;?>&chds=0,<? echo $row_max[0];?>>
<p></p>
 
<div  class="tablediv">
	<div class="rowdiv">
		<div  class="celldiv">Пополнили на сумму:</div>
		<div  class="celldiv2"><? echo $row_sum_p[0]." руб."; ?></div>
	</div>
	<div class="rowdiv">
		<div  class="celldiv">Всего потрачено:</div>
		<div  class="celldiv2"> <? echo abs($row_sum_m[0])." руб."; ?></div>
	</div>
</div>
 
 <br>
 
</body>
</html>
 

Задумываетесь о системах контроля доступа? Охранные системы киев - полный контроль над вашим домом.
Сохраняем в папку вашего сервера и когда скопится необходимое кол-во данных в mysql, то при обращении в браузере вы должны получить что-то вроде этого:


Файлы:
tele2_balans.tar.gz
теги: php, nokia

0 комментариев

Оставить комментарий: