勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

imgタグで作成したグラフをjQueryでリアルタイムに動かす

      2014/07/03

このグラフをリアルタイムプレビューさせる。

■サンプル
http://sample.taitan916.info/graph/

■ソース
<?php
$max_a = 0;
for ($i=0; $i<5; $i++) {
$graph_val[$i] = rand(1,50);
$max_a += $graph_val[$i];
}
$max_b = max($graph_val);
?>
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8">
<style>
.graph {
min-width:300px; min-height:300px; border:solid 1px;
}
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(function(){
$("[name='graph_value']").bind('keyup change', function(){ //項目をいじった際にイベント
var i = 0;
var max_a = 0;
var graph_array = new Array();
$("[name='graph_value
']").each(function() {
graph_array[i] = $("[name='graph_value']").eq(i).val();
max_a += Number(graph_array[i]); //項目の合計値
i++;
});
var max_b = Math.max.apply(null, graph_array); //項目の最大値
for(i=0; i<graph_array.length; i++){
$(".class_title1_"+i).text(graph_array[i]);
$(".class_change1_"+i).css('width',(Math.floor(graph_array[i] / max_a * 100))+'%');
$(".class_title2_"+i).text(graph_array[i]);
$(".class_change2_"+i).css('width',(Math.floor(graph_array[i] / max_b * 100))+'%');
}
});
})
</script>
<title>graph</title>
</head>
<body>
<h1>graph</h1>
<table>
<tr>
<td>
<?php
for ($i=0; $i<5; $i++) {
echo "項目" . ($i+1) . ":
<input type='text' name='graph_value
' style='width:30px' value='{$graph_val[$i]}'><br>";
}
?>
</td>
</tr>
<tr>
<td class="graph">
■本当の割合を出したもの<br>
<?php
for ($i=0; $i<5; $i++) {
echo "項目" . ($i+1) . ":<span class='class_title1_{$i}'>{$graph_val[$i]}</span><br>
<img src='./image/graph.jpg' style='height:10px; width:" . (floor($graph_val[$i] / $max_a * 100)) . "%;' class='class_change1_{$i}'><br>";
}
?>
</td>
<td class="graph">
■最大の結果を100%にして出したもの<br>
<?php
for ($i=0; $i<5; $i++) {
echo "項目" . ($i+1) . ":<span class='class_title2_{$i}'>{$graph_val[$i]}</span><br>
<img src='./image/graph.jpg' style='height:10px; width:" . (floor($graph_val[$i] / $max_b * 100)) . "%;' class='class_change2_{$i}'><br>";
}
?>
</td>
</tr>
</table>
</body>
</html>

■その他
Math.max.apply(null, graph_array)
PHPのmax関数みたいに配列の最大値を取得できる。

Number(graph_array[i])
整数値に変換。

 - jQuery, PHP

  関連記事

PHPでPOST送信する際に多次元配列も送る

PHPでPOST送信する際に多次元配列も送りたかった。ただ普通に送ろうとするとO ...

PHPでコマンドを実行して画像を加工

PHPで画像をリサイズしたりサムネイルを作ろうとすると、 ソースが長くなって面倒 ...

PHPで配列データをCSVとしてダウンロードさせる方法

PHPでログ的なデータをCSV化したかった。ただ、複数の人間が使うのでCSVファ ...

jQueryで電話番号チェック

やりたかったことはjavascriptかjQueryで 電話番号のバリデート。 ...

jQueryのfind時に複数のセレクタ指定

みたいなソース ...

JSONをPHPで扱う

JSONデータはjavascriptで扱うものと思ってたけど、 PHPでも使える ...

PHPで特定のファイル内のみタイムアウトを無効にする

重たい処理をするページだけ、タイムアウトを無効にする場合のメモ。 以下をPHPフ ...

フォルダにリンク制限をかける

imgというフォルダがあり、直接URLを叩いても 中身を見られないけど、同一サー ...

smart_resize_imageで縦横の比率関係なく、固定リサイズ

PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズで使ったs ...

Codeigniterで異なるデータベースを使用する

Codeigniterで2つのコンテンツがあって、それぞれ別のデータベースを使用 ...