【PHP】FC2ライブの接続率を集計

こんにちは。
今回は、PHPでFC2ライブ(アダルト)の配信接続率を集計するコードを紹介します。
FC2ライブの公式APIを使用しており、仕様変更の場合は、都度コードの更新を行ってください。

データベースでテーブルを4つ作成します。

テーブル名:cnannel_data

CREATE TABLE `channel_data` (
  `id` int(11) NOT NULL,
  `time` varchar(255) DEFAULT NULL,
  `channel_all` int(11) DEFAULT NULL COMMENT '総チャンネル数',
  `channel_free` int(11) DEFAULT NULL COMMENT '無料配信',
  `channel_pay` int(11) DEFAULT NULL COMMENT '有料配信',
  `channel_two` int(11) DEFAULT NULL COMMENT '2ショット',
  `free_taiki` int(11) DEFAULT NULL COMMENT '無料待機者',
  `free_connect` int(11) DEFAULT NULL COMMENT '無料接続率',
  `pay_taiki` int(11) DEFAULT NULL COMMENT '有料待機者',
  `pay_connect` int(11) DEFAULT NULL COMMENT '有料接続率',
  `delflag` int(1) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='チャンネル情報保存用';
ALTER TABLE `channel_data`
  ADD PRIMARY KEY (`id`);
ALTER TABLE `channel_data`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;


テーブル名:channel_data_ave

CREATE TABLE `channel_data_ave` (
  `id` int(11) NOT NULL,
  `date` varchar(20) NOT NULL,
  `hours` int(2) NOT NULL,
  `channel_free` int(3) NOT NULL DEFAULT 0 COMMENT '無料接続率',
  `channel_pay` int(3) NOT NULL DEFAULT 0 COMMENT '有料接続率',
  `delflag` int(1) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='接続率平均値';
ALTER TABLE `channel_data_ave`
  ADD PRIMARY KEY (`id`);
ALTER TABLE `channel_data_ave`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;


テーブル名:channel_list

CREATE TABLE `channel_list` (
  `id` int(11) NOT NULL,
  `channel_id` mediumtext DEFAULT NULL,
  `channel_title` mediumtext DEFAULT NULL,
  `channel_name` mediumtext DEFAULT NULL,
  `channel_type` int(1) DEFAULT NULL,
  `channel_count` int(11) DEFAULT NULL,
  `channel_login` int(1) DEFAULT NULL,
  `channel_pay` int(1) DEFAULT NULL,
  `time` varchar(225) DEFAULT NULL,
  `delflag` int(11) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `channel_list`
  ADD PRIMARY KEY (`id`);
ALTER TABLE `channel_list`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;


テーブル名:channel_time

CREATE TABLE `channel_time` (
  `id` int(11) NOT NULL,
  `time` varchar(255) NOT NULL,
  `delflag` int(1) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `channel_time`
  ADD PRIMARY KEY (`id`);
ALTER TABLE `channel_time`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

必要なPHPファイルを作成していきます。

databese.php
必要項目を書き換えてください。

<?php
	define('DSN', 'mysql:host=10.0.0.0;dbname=DBname');
	define('DB_USER', 'user_name');
	define('DB_PASS', 'password');
?>


chlist.php
サーバー側のCronにて、5分毎に実行されるよう設定してください。

<?php
	session_start();
	//クリックジャッキング対策
	header('X-FRAME-OPTIONS: SAMEORIGIN');
	require_once('./datebase.php');
	$pdo = NULL;
	$pdo = new PDO(DSN, DB_USER, DB_PASS);

	$url = 'https://live.fc2.com/adult/contents/allchannellist.php';

	$json = file_get_contents($url);
	$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
	$arr = json_decode($json,true);

	$json_count = count($arr["channel"]);
	$channel_id = array();
	$channel_title = array();
	$channel_name = array();
	$channel_type = array();
	$channel_count = array();
	$channel_login = array();
	$channel_pay = array();

	date_default_timezone_set('Asia/Tokyo');
	$now = date('Y-m-d H:i:s');

	$result = NULL;
	$result = $pdo->prepare('INSERT INTO channel_time(time) VALUES(:now)');
	$result->bindValue(':now', $now, PDO::PARAM_STR);
	$result->execute();

	for($i=0;$i<=$json_count-1;$i++){
		$channel_id = $arr["channel"][$i]["id"];
		$channel_title = $arr["channel"][$i]["title"];
		$channel_name = $arr["channel"][$i]["name"];
		$channel_type = $arr["channel"][$i]["type"];
		$channel_count = $arr["channel"][$i]["count"];
		$channel_login = $arr["channel"][$i]["login"];
		$channel_pay = $arr["channel"][$i]["pay"];

		$result = NULL;
		$result = $pdo->prepare('INSERT INTO channel_list(channel_id,channel_title,channel_name,channel_type,channel_count,channel_login,channel_pay,time) VALUES(:channel_id,:channel_title,:channel_name,:channel_type,:channel_count,:channel_login,:channel_pay,:now)');
		$result->bindValue(':channel_id', $channel_id, PDO::PARAM_STR);
		$result->bindValue(':channel_title', $channel_title, PDO::PARAM_STR);
		$result->bindValue(':channel_name', $channel_name, PDO::PARAM_STR);
		$result->bindValue(':channel_type', $channel_type, PDO::PARAM_INT);
		$result->bindValue(':channel_count', $channel_count, PDO::PARAM_INT);
		$result->bindValue(':channel_login', $channel_login, PDO::PARAM_INT);
		$result->bindValue(':channel_pay', $channel_pay, PDO::PARAM_INT);
		$result->bindValue(':now', $now, PDO::PARAM_STR);
		$result->execute();
	}

	$chall = 0;
	$pay_free_count = 0;
	$free_taiki_count = 0;
	$pay_yuryo_count = 0;
	$pay_taiki_count = 0;
	$freecalc1 = 0;
	$freecalc2 = 0;
	$paycalc1 = 0;
	$paycalc2 = 0;
	$twopay_count = 0;
	$view = NULL;
	$dbflag = 1;

	$stmt = NULL;
	$row = NULL;
	$stmt = $pdo->prepare('SELECT * FROM channel_time WHERE delflag=0 ORDER BY id DESC LIMIT 100');
	$stmt->execute();
	while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
		$chtime = $row['time'];

		$stmt2 = NULL;
		$row2 = NULL;
		$stmt2 = $pdo->prepare('SELECT * FROM channel_list WHERE time=:chtime AND delflag=0');
		$stmt2->bindValue(':chtime', $chtime, PDO::PARAM_STR);
    	$stmt2->execute();
		while($row2 = $stmt2->fetch(PDO::FETCH_ASSOC)){
			$pay = $row2['channel_pay'];
			$taiki = $row2['channel_count'];
			$ctype = $row2['channel_type'];
			$chall = $chall + 1;
		
			if($pay === 0){
				//無料配信
				$pay_free_count = $pay_free_count + 1;
				if($taiki <= 1){
					$free_taiki_count = $free_taiki_count + 1;
				}
			}else{
				if($ctype === 1){
					//有料配信
					$pay_yuryo_count = $pay_yuryo_count + 1;
					//待機者
					if($taiki <= 1){
						$pay_taiki_count = $pay_taiki_count + 1;
					}
				}elseif($ctype === 2){
					//2ショット配信
					$twopay_count = $twopay_count + 1;
				}
				
			}
		}
		
		//無料中=無料配信-待機者数
		$freecalc1 = $pay_free_count - $free_taiki_count;
		//接続率=(無料中/全配信)*100
		if($freecalc1 == 0){
			$freecalc1 = 1;
		}
		$freecalc2 = ($freecalc1 / $pay_free_count)*100;
		$freecalc2 = round($freecalc2);
		
		//有料中=有料全配信-待機者数
		$paycalc1 = $pay_yuryo_count - $pay_taiki_count;
		//接続率=(有料中/全配信)*100
		if($paycalc1 == 0){
			$paycalc1 = 1;
		}
		$paycalc2 = ($paycalc1 / $pay_yuryo_count)*100;
		$paycalc2 = round($paycalc2);

		//表示データ
		$view .= '<div class="textcenter">'.$chtime.'</div><table class="table1-1"><tr><th>チャンネル数</th><td>'.number_format($chall).'</td></tr><tr><th>無料</th><td>'.number_format($pay_free_count).'</td></tr><tr><th>無料待機者</th><td>'.number_format($free_taiki_count).'</td></tr><tr><th>無料接続率</th><td>'.$freecalc2.'%</td></tr><tr><th>有料</th><td>'.number_format($pay_yuryo_count).'</td></tr><tr><th>有料待機者</th><td>'.number_format($pay_taiki_count).'</td></tr><tr><th>有料接続率</th><td>'.$paycalc2.'%</td></tr><tr><th>2ショット</th><td>'.number_format($twopay_count).'</td></tr></table><br>';
		
		//DB:channel_data登録
		if($dbflag === 1){//最初に抽出されたデータのみ登録
			$result = NULL;
			$result = $pdo->prepare('INSERT INTO channel_data(time,channel_all,channel_free,channel_pay,channel_two,free_taiki,free_connect,pay_taiki,pay_connect) VALUES(:now,:channel_all,:channel_free,:channel_pay,:channel_two,:free_taiki,:free_connect,:pay_taiki,:pay_connect)');
			$result->bindValue(':now', $now, PDO::PARAM_STR);
			$result->bindValue(':channel_all', $chall, PDO::PARAM_INT);
			$result->bindValue(':channel_free', $pay_free_count, PDO::PARAM_INT);
			$result->bindValue(':channel_pay', $pay_yuryo_count, PDO::PARAM_INT);
			$result->bindValue(':channel_two', $twopay_count, PDO::PARAM_INT);
			$result->bindValue(':free_taiki', $free_taiki_count, PDO::PARAM_INT);
			$result->bindValue(':free_connect', $freecalc2, PDO::PARAM_INT);
			$result->bindValue(':pay_taiki', $pay_taiki_count, PDO::PARAM_INT);
			$result->bindValue(':pay_connect', $paycalc2, PDO::PARAM_INT);
			$result->execute();
		}
		$dbflag = 0;

		$chall = 0;
		$free_taiki_count = 0;
		$pay_free_count = 0;
		$freecalc1 = 0;
		$freecalc2 = 0;
		$pay_yuryo_count = 0;
		$pay_taiki_count = 0;
		$paycalc1 = 0;
		$paycalc2 = 0;
		$twopay_count = 0;
	}
	echo $view;
?>


chlist_ave.php
サーバー側のCronで1時間ごとに実行されるように設定してください。

<?php
	//配信接続率平均値算出用
	session_start();
	//クリックジャッキング対策
	header('X-FRAME-OPTIONS: SAMEORIGIN');
	require_once('./datebase.php');
	$pdo = NULL;
	$pdo = new PDO(DSN, DB_USER, DB_PASS);

	

	date_default_timezone_set('Asia/Tokyo');
	$now = new DateTimeImmutable();
	$now->format("Y-m-d H:i:s");
	$now = $now->modify("-1 hour");
	$now2 = $now->format("Y-m-d H:00:00");
	$now3 = $now->format("Y-m-d H:59:59");
	$ymd = $now->format("Y-m-d");
	$hours = $now->format("H");
	
	$count = NULL;
	$count = 0;
	$channel_free = NULL;
	$channel_pay = NULL;
	$free_connect = NULL;
	$pay_connect = NULL;

	$stmt = NULL;
	$row = NULL;
	$stmt = $pdo->prepare('SELECT * FROM channel_data WHERE time between :now2  AND :now3 AND delflag=0');
    $stmt->bindValue(':now2', $now2, PDO::PARAM_STR);
	$stmt->bindValue(':now3', $now3, PDO::PARAM_STR);
    $stmt->execute();
    while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
		$count = $count + 1;
		$channel_free = $row['free_connect'];
		$channel_pay = $row['pay_connect'];
		
		$free_connect = $free_connect + $channel_free;
		$pay_connect = $pay_connect + $channel_pay;
	}

	$free_calc = floor($free_connect/$count);
	$pay_calc = floor($pay_connect/$count);

	$result = NULL;
	$result = $pdo->prepare('INSERT INTO channel_data_ave(date,hours,channel_free,channel_pay) VALUES(:date,:hours,:channel_free,:channel_pay)');
	$result->bindValue(':date', $ymd, PDO::PARAM_STR);
	$result->bindValue(':hours', $hours, PDO::PARAM_INT);
	$result->bindValue(':channel_free', $free_calc, PDO::PARAM_INT);
	$result->bindValue(':channel_pay', $pay_calc, PDO::PARAM_INT);
	$result->execute();

?>


このページを開くと、集計したデータが表示されます。
connect_view.php

<?php
	//配信接続率平均値表示
	session_start();
	//クリックジャッキング対策
	header('X-FRAME-OPTIONS: SAMEORIGIN');
	require_once('../datebase.php');
	$pdo = NULL;
	$pdo = new PDO(DSN, DB_USER, DB_PASS);

	//日時別データ取得,30日前まで
	$view0 = NULL;
	$view1 = NULL;
	$view2 = NULL;
	$view3 = NULL;
	$view4 = NULL;
	$view5 = NULL;
	$view6 = NULL;
	$view7 = NULL;
	$view8 = NULL;
	$view9 = NULL;
	$view10 = NULL;
	$view11 = NULL;
	$view12 = NULL;
	$view13 = NULL;
	$view14 = NULL;
	$view15 = NULL;
	$view16 = NULL;
	$view17 = NULL;
	$view18 = NULL;
	$view19 = NULL;
	$view20 = NULL;
	$view21 = NULL;
	$view22 = NULL;
	$view23 = NULL;
	$view24 = NULL;
	$view25 = NULL;
	$view26 = NULL;
	$view27 = NULL;
	$view28 = NULL;
	$view29 = NULL;
	$view30 = NULL;
	$ymd0 = NULL;
	$ymd1 = NULL;
	$ymd2 = NULL;
	$ymd3 = NULL;
	$ymd4 = NULL;
	$ymd5 = NULL;
	$ymd6 = NULL;
	$ymd7 = NULL;
	$ymd8 = NULL;
	$ymd9 = NULL;
	$ymd10 = NULL;
	$ymd11 = NULL;
	$ymd12 = NULL;
	$ymd13 = NULL;
	$ymd14 = NULL;
	$ymd15 = NULL;
	$ymd16 = NULL;
	$ymd17 = NULL;
	$ymd18 = NULL;
	$ymd19 = NULL;
	$ymd20 = NULL;
	$ymd21 = NULL;
	$ymd22 = NULL;
	$ymd23 = NULL;
	$ymd24 = NULL;
	$ymd25 = NULL;
	$ymd26 = NULL;
	$ymd27 = NULL;
	$ymd28 = NULL;
	$ymd29 = NULL;
	$ymd30 = NULL;

	for($i=30;$i>=0;$i--){
		date_default_timezone_set('Asia/Tokyo');
		$now = new DateTimeImmutable();
		$now->format("Y-m-d H:i:s");
		$now = $now->modify("-".$i." day");
		$ymd = $now->format("Y-m-d");
		$ymda = $now->format("Y-m-d(D)");

		if(strpos($ymda,'Sat') !== false){
			$ymda = '<font style="color:blue;">'.$ymda.'</font>';
		}elseif(strpos($ymda,'Sun') !== false){
			$ymda = '<font style="color:red;">'.$ymda.'</font>';
		}

		if($i === 30){
			$ymd30 = $ymda;
		}elseif($i === 29){
			$ymd29 = $ymda;
		}elseif($i === 28){
			$ymd28 = $ymda;
		}elseif($i === 27){
			$ymd27 = $ymda;
		}elseif($i === 26){
			$ymd26 = $ymda;
		}elseif($i === 25){
			$ymd25 = $ymda;
		}elseif($i === 24){
			$ymd24 = $ymda;
		}elseif($i === 23){
			$ymd23 = $ymda;
		}elseif($i === 22){
			$ymd22 = $ymda;
		}elseif($i === 21){
			$ymd21 = $ymda;
		}elseif($i === 20){
			$ymd20 = $ymda;
		}elseif($i === 19){
			$ymd19 = $ymda;
		}elseif($i === 18){
			$ymd18 = $ymda;
		}elseif($i === 17){
			$ymd17 = $ymda;
		}elseif($i === 16){
			$ymd16 = $ymda;
		}elseif($i === 15){
			$ymd15 = $ymda;
		}elseif($i === 14){
			$ymd14 = $ymda;
		}elseif($i === 13){
			$ymd13 = $ymda;
		}elseif($i === 12){
			$ymd12 = $ymda;
		}elseif($i === 11){
			$ymd11 = $ymda;
		}elseif($i === 10){
			$ymd10 = $ymda;
		}elseif($i === 9){
			$ymd9 = $ymda;
		}elseif($i === 8){
			$ymd8 = $ymda;
		}elseif($i === 7){
			$ymd7 = $ymda;
		}elseif($i === 6){
			$ymd6 = $ymda;
		}elseif($i === 5){
			$ymd5 = $ymda;
		}elseif($i === 4){
			$ymd4 = $ymda;
		}elseif($i === 3){
			$ymd3 = $ymda;
		}elseif($i === 2){
			$ymd2 = $ymda;
		}elseif($i === 1){
			$ymd1 = $ymda;
		}elseif($i === 0){
			$ymd0 = $ymda;
		}

		$hours = NULL;
		$channel_free = NULL;
		$channel_pay = NULL;

		$stmt = NULL;
		$row = NULL;
		$stmt = $pdo->prepare('SELECT * FROM channel_data_ave WHERE date=:ymd AND delflag=0 ORDER BY id ASC');
   		$stmt->bindValue(':ymd', $ymd, PDO::PARAM_STR);
   		$stmt->execute();
   		while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
			$hours = $row['hours'];
			$channel_free = $row['channel_free'];
			$channel_pay = $row['channel_pay'];
			
			if($channel_free >= 80){
				$channel_free2 = '<font class="red">'.$channel_free.'</font>';
			}else{
				$channel_free2 = $channel_free;
			}

			if($channel_pay >= 7){
				$channel_pay2 = '<font class="red">'.$channel_pay.'</font>';
			}else{
				$channel_pay2 = $channel_pay;
			}

			//データ作成
			if($i === 30){
				$view30 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 29){
				$view29 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 28){
				$view28 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 27){
				$view27 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 26){
				$view26 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 25){
				$view25 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 24){
				$view24 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 23){
				$view23 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 22){
				$view22 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 21){
				$view21 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 20){
				$view20 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 19){
				$view19 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 18){
				$view18 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 17){
				$view17 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 16){
				$view16 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 15){
				$view15 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 14){
				$view14 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 13){
				$view13 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 12){
				$view12 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 11){
				$view11 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 10){
				$view10 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 9){
				$view9 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 8){
				$view8 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 7){
				$view7 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 6){
				$view6 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 5){
				$view5 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 4){
				$view4 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 3){
				$view3 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 2){
				$view2 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 1){
				$view1 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}elseif($i === 0){
				$view0 .= '<div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar" data-value="'.$channel_free.'"></div></div><span class="number">'.$channel_free2.'%</span></div><div class="row"><span class="label">'.$hours.'時</span><div class="bar-wrap"><div class="bar bar2" data-value="'.$channel_pay.'"></div></div><span class="number">'.$channel_pay2.'%</span></div><div class="chart-h"></div>';
			}
		}
	}
?>
<!doctype html>
<html lang="ja">
	<head>
		<meta charset="UTF-8">
		<title>接続率</title>

		<!-- Google Fontsの指定 -->
		<link href="https://fonts.googleapis.com/css2?family=Lato:ital,wght@1,700&family=Montserrat:wght@700&family=Noto+Serif+JP:wght@500&display=swap" rel="stylesheet">

		<!-- FontAwesome -->
		<link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet">
		<script src="https://kit.fontawesome.com/b4de523845.js" crossorigin="anonymous"></script>

		<!-- viewport -->
		<meta name="viewport" content="width=device-width,initial-scale=1.0" />
	</head>
	<body>
		<div class="main-contents">
			<div class="textcenter"><b>日時別接続率(過去30日分)</b></div>
			<br>
			<div class="textcenter">
				FC2ライブ(アダルト)の日時別接続率データです。<br>
				接続率は小数点以下切り捨てで表示しています。<br>
				目安としてご利用ください。<br>
			</div>
			<div class="textcenter">
				<font style="color:#7fc3ff;">■</font>無料配信 
				<font style="color:#fca9e1;">■</font>有料配信
			</div>
			<br>
			<div class="chart-wrap">
				<div id="dashboard-stats" class="chart bars-horizontal brand-primary">
					<!-- 0日前 -->
					<div class="chart-title"><?=$ymd0?></div>
					<?=$view0?>
					<!-- 1日前 -->
					<div class="chart-title"><?=$ymd1?></div>
					<?=$view1?>
					<!-- 2日前 -->
					<div class="chart-title"><?=$ymd2?></div>
					<?=$view2?>
					<!-- 3日前 -->
					<div class="chart-title"><?=$ymd3?></div>
					<?=$view3?>
					<!-- 4日前 -->
					<div class="chart-title"><?=$ymd4?></div>
					<?=$view4?>
					<!-- 5日前 -->
					<div class="chart-title"><?=$ymd5?></div>
					<?=$view5?>
					<!-- 6日前 -->
					<div class="chart-title"><?=$ymd6?></div>
					<?=$view6?>
					<!-- 7日前 -->
					<div class="chart-title"><?=$ymd7?></div>
					<?=$view7?>
					<!-- 8日前 -->
					<div class="chart-title"><?=$ymd8?></div>
					<?=$view8?>
					<!-- 9日前 -->
					<div class="chart-title"><?=$ymd9?></div>
					<?=$view9?>
					<!-- 10日前 -->
					<div class="chart-title"><?=$ymd10?></div>
					<?=$view10?>
					<!-- 11日前 -->
					<div class="chart-title"><?=$ymd11?></div>
					<?=$view11?>
					<!-- 12日前 -->
					<div class="chart-title"><?=$ymd12?></div>
					<?=$view12?>
					<!-- 13日前 -->
					<div class="chart-title"><?=$ymd13?></div>
					<?=$view13?>
					<!-- 14日前 -->
					<div class="chart-title"><?=$ymd14?></div>
					<?=$view14?>
					<!-- 15日前 -->
					<div class="chart-title"><?=$ymd15?></div>
					<?=$view15?>
					<!-- 16日前 -->
					<div class="chart-title"><?=$ymd16?></div>
					<?=$view16?>
					<!-- 17日前 -->
					<div class="chart-title"><?=$ymd17?></div>
					<?=$view17?>
					<!-- 18日前 -->
					<div class="chart-title"><?=$ymd18?></div>
					<?=$view18?>
					<!-- 19日前 -->
					<div class="chart-title"><?=$ymd19?></div>
					<?=$view19?>
					<!-- 20日前 -->
					<div class="chart-title"><?=$ymd20?></div>
					<?=$view20?>
					<!-- 21日前 -->
					<div class="chart-title"><?=$ymd21?></div>
					<?=$view21?>
					<!-- 22日前 -->
					<div class="chart-title"><?=$ymd22?></div>
					<?=$view22?>
					<!-- 23日前 -->
					<div class="chart-title"><?=$ymd23?></div>
					<?=$view23?>
					<!-- 24日前 -->
					<div class="chart-title"><?=$ymd24?></div>
					<?=$view24?>
					<!-- 25日前 -->
					<div class="chart-title"><?=$ymd25?></div>
					<?=$view25?>
					<!-- 26日前 -->
					<div class="chart-title"><?=$ymd26?></div>
					<?=$view26?>
					<!-- 27日前 -->
					<div class="chart-title"><?=$ymd27?></div>
					<?=$view27?>
					<!-- 28日前 -->
					<div class="chart-title"><?=$ymd28?></div>
					<?=$view28?>
					<!-- 29日前 -->
					<div class="chart-title"><?=$ymd29?></div>
					<?=$view29?>
					<!-- 30日前 -->
					<div class="chart-title"><?=$ymd30?></div>
					<?=$view30?>
				</div>
			</div>
		</div>
		<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
		<script>
			(function($) {
				function generateBarGraph(wrapper) {
					// Set Up Values Array
					var values = [];

					// Get Values and save to Array
					$(wrapper + ' .bar').each(function(index, el) {
						values.push($(this).data('value'));
					});

					// Get Max Value From Array
					//var max_value = Math.max.apply(Math, values);
					var max_value = 100;

					
					// Set width of bar to percent of max value
					$(wrapper + ' .bar').each(function(index, el) {
						var bar = $(this),
							value = bar.data('value'),
							percent = Math.ceil((value / max_value) * 100);

						// Set Width & Add Class
						bar.width(percent + '%');
						bar.addClass('in');
					});
				}

				// Generate the bar graph on window load...
				$(window).on('load', function(event) {
					generateBarGraph('#dashboard-stats');
				});
			})(jQuery); 
		</script>
	</body>
</html>


コードをザックリと紹介していますので、細かい部分については各自で追記をお願いします。

この記事が気に入ったらサポートをしてみませんか?