.htaccessでPHPのファイルアップロードサイズの上限値を変更
2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…

円グラフや棒グラフを実装する際に値を読み込むことで自動生成可能な「chart.js」
Gemini等の生成AIを使用してスライドを作成する際にも使用されていますので、使い方を覚えてくと編集がしやすくなるのでメモ
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels"></script>
<script>
$(function() {
initPieCharts();
initBbrCharts();
});
</script>
<!-- 円グラフ -->
<div class="chart-wrap">
<canvas class="pie-chart" data-values="57, 43" data-labels="男性, 女性"></canvas>
</div>
<!-- 棒グラフ -->
<div class="chart-wrap">
<canvas class="bar-chart" data-values="120, 200, 280, 350, 400, 530" data-labels="2020, 2021, 2022, 2023, 2024, 2025">
</div>
サンプルは外部読み込みファイルで独自関数を作成し、HTML上の値を参照できる仕組みにしています
//円グラフ
function initPieCharts(selector = '.pie-chart') {
$(selector).each(function() {
createPieChart(this);
});
}
function createPieChart(el) {
const values = $(el).data('values').split(',').map(Number);
const labels = $(el).data('labels').split(',');
//文字サイズを取得
const rootFontSize = parseFloat(getComputedStyle(document.documentElement).fontSize);
//グラフの色設定
const baseColors = ['#458ca8', '#e08081', '#a9c25c', '#ddc354', '#efa14c', '#ae5cc2'];
const colors = values.map((_, i) => baseColors[i % baseColors.length]);
return new Chart(el, {
type: 'pie',
data: {
labels: labels,
datasets: [{
data: values,
backgroundColor: colors
}]
},
options: {
responsive: true,
maintainAspectRatio: true,
animation: false,
plugins: {
legend: {
display: false
},
tooltip: {
enabled: false
},
datalabels: {
clamp: true,
labels: {
title: {
formatter: (value, context) => {
return context.chart.data.labels[context.dataIndex];
},
color: '#fff',
font: { size: 1 * rootFontSize },
anchor: 'center',
align: 'top',
offset: 10,
padding: 5
},
value: {
formatter: (value, context) => {
const data = context.chart.data.datasets[0].data;
const total = data.reduce((a, b) => a + b, 0);
const percent = Math.round((value / total) * 100);
return percent + '%';
},
color: '#fff',
font: { size: 1.4 * rootFontSize, weight: 'bold' },
anchor: 'center',
align: 'bottom'
}
}
}
}
},
plugins: [ChartDataLabels]
});
}
//棒グラフ
function initBbrCharts(selector = '.bar-chart') {
$(selector).each(function() {
createBarChart(this);
});
}
function createBarChart(el) {
const values = $(el).data('values').split(',').map(Number);
const labels = $(el).data('labels').split(',');
//文字サイズを取得
const rootFontSize = parseFloat(getComputedStyle(document.documentElement).fontSize);
//棒グラフの色を設定
const colors = values.map((_, i) => {
return (i === values.length - 1) ? '#458ca8' : '#ccc';
});
return new Chart(el, {
type: 'bar',
data: {
labels: labels,
datasets: [{
data: values,
backgroundColor: colors
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
animation: false,
scales: {
x: {
grid: {
display: true, // グリッド線
drawBorder: false // 軸の線
},
ticks: {
display: true // 目盛りラベル
}
},
y: {
grid: {
display: false,
drawBorder: false
},
ticks: {
display: false
}
}
},
plugins: {
legend: {
display: false
},
tooltip: {
enabled: false
},
datalabels: {
clamp: true,
labels: {
value: {
formatter: (value) => value,
color: '#fff',
font: { size: 1.4 * rootFontSize, weight: 'bold' },
anchor: 'center',
}
}
}
}
},
plugins: [ChartDataLabels]
});
}
| オプション(options) | 効果 |
| responsive | レスポンシブ対応の可否 |
| maintainAspectRatio | 比率の固定の可否 |
| animation | 表示する際のアニメーションの可否 |

2022.02.5
PHPを使用して画像(動画・PDF等)をアップロードするフォームを作成した際に、ファイル…

2020.10.3
テキストエリア等で入力した文字の中にURLを含んでいた場合に、自動で認識してリンクタグを…

2024.03.30
外部ファイル(CSVファイル等)を読み込んでサイト内に表示する際に、保存時の文字コードが…

2020.12.5
メールフォームからメールを送信する際に、画像(ファイル)を添付できるようにしてほしいとの…

2023.12.2
ワードプレスの投稿のカテゴリー機能を、目的ごとに使い分けたいというご要望があった際に、カ…

2020.08.1
動画ファイルをCMS化して保存するときに、多くの場合はファイルパスをデータベース(MyS…

2022.09.24
パソコンやスマートフォンの戻るボタンを使って画面を戻す(ブラウザバックする)時があります…

2022.02.19
画像データ等をサーバーにアップロードする際、一点づつアップロードしても良いけれど、ファイ…

2019.12.29
メールフォーム等での入力値チェック(バリデーション)。PHPの「preg_match」(…

2020.08.15
フォームの入力値やURLのパラメータ等、文字列や数値を受け取る際に正規表現を利用してバリ…

ホームページ上にビフォーアフターの画像を掲載する場合に、同じ画角の画像を対比させて表示し…

以前、飲食店サイトを制作した際に、記念写真を掲載する目的でメインビューに使っていたスクリ…

時間を指定して表示を切り替える際にPHPを使用することが多かったのだけれど、利用している…