PHP 8.3 / JavaScript / jQuery / MySQL

動かして、読んで、まねして覚える。
Webプログラミングの入門サンプル帳

動くデモと1行ずつのコード解説で、Webプログラミングの基本を身につける。どのページも「実際に動くデモ」と「黒い画面のコード」と「1行ずつの解説」がセットになっています。

ここに載せているサンプルは2017〜2018年ごろに書いたものです。情報が古くなり、今のPHPでは動かなくなっていたため、2026年にPHP 8.3で動くように書き直し、初めての人にも読めるよう解説をつけ直しました。

デモを触るまずはボタンを押したり入力したりして、どう動くかを確かめます。
コードを読む黒い画面のコードと解説で、どこが何をしているかを確認します。
まねして書く「コピー」ボタンでコードを持ち帰り、自分の環境で動かしてみます。

JavaScript の基本7本

ブラウザだけで動く小さなプログラム。HTMLとJavaScriptの基本を押さえます。

No.01

押したキーの情報を調べる

キーボードを押すと、そのキーの文字・位置・キー番号、Shift や Ctrl を押しているかを表示します。キーボード操作を扱うプログラムの第一歩です。

初級 JavaScript イベント キーボード
No.02

ストップウォッチを作る

スタート・ストップ・リセットの3つのボタンで動く、1/1000秒まで表示するストップウォッチです。時間の計り方と、くり返し処理の止め方を学びます。

初級 JavaScript タイマー Date
No.03

タイピング練習ゲームを作る

お題の文字を正しく打つと次に進む、タイピング練習ゲームです。キーボードの図を SVG で描き、次に押すキーを光らせます。英語・日本語かな・ハングル・注音に対応しています。

中級 JavaScript キーボード SVG
No.04

画像をブラウザで縮小・拡大する

選んだ画像を、サーバーに送らずブラウザの中だけで縮小します。FileReader で画像を読み込み、canvas に描き直して、縮小した画像をダウンロードできるようにします。

中級 JavaScript jQuery canvas
No.05

ブラウザに文章を読み上げさせる

入力した文章を、ブラウザの音声合成機能(Web Speech API)で読み上げます。たった数行で、言語や速さを変えて声を出せます。

初級 JavaScript Web Speech API 音声合成
No.06

スマホかパソコンかを判定する

ブラウザが送ってくる「ユーザーエージェント」を PHP で調べて、スマホとパソコンで表示を変えます。PHP の配列・繰り返し・条件分岐の練習にもなります。

初級 PHP ユーザーエージェント 条件分岐
No.07

PHPのデータをJavaScriptで受け取る

データベースから取り出したデータを、PHP で表示する方法と、JSON に変えて JavaScript に渡す方法の2通りで表示します。PHP と JavaScript の橋渡しの基本です。

中級 PHP MySQL JSON

jQuery で動きをつける10本

クリックやアニメーション、ajax通信など、画面に動きをつける定番テクニック。

No.08

Typed.js でタイピング風に文字を表示する

文字を1文字ずつ打ち込むように表示するアニメーションを、jQuery プラグイン「Typed.js」で作ります。ページのキャッチコピーなどに使える表現です。

初級 jQuery プラグイン アニメーション
No.09

マウスを乗せて出るボタンで、入力欄に文字を挿入する

マウスを乗せると小さなボタン一覧が出て、クリックした記号が入力欄に入る仕組みを作ります。あわせて、行の追加・削除と「イベントの委譲」も学びます。

初級 jQuery イベント DOM操作
No.10

伝票番号から荷物の追跡ページのURLを作る

運送会社を選んで伝票番号を入れると、追跡ページへのリンクができる小さなツールです。セレクトボックスの値の読み取り方と、オブジェクトを使った「対応表」の作り方を学びます。

初級 jQuery フォーム オブジェクト
No.11

画像が横に流れて切り替わるスライダー

何枚かの画像を一定の時間ごとに横へ流して切り替える、シンプルなスライダーを作ります。「枠からはみ出た部分を隠す」CSS と、jQuery の animate() の使い方がわかります。

初級 jQuery アニメーション CSS
No.12

ajax で受け取った部品を追加し、そのボタンも動かす

ボタンを押すたびにサーバーの PHP から HTML の部品を受け取り、ページに追加します。あとから追加した要素のボタンを動かすための「イベントの委譲」もあわせて学びます。

初級 jQuery ajax PHP
No.13

円グラフのプラグイン Circliful:ボタンで1%ずつ増やす

円グラフを描く jQuery プラグイン「Circliful」を使い、ボタンを押すたびにグラフが1%ずつ増える仕組みを作ります。グラフの正体である SVG の線をどう伸ばしているかも解説します。

初級 jQuery プラグイン SVG
No.14

円グラフのプラグイン Circliful:レッスンの進み具合を表示する

全4回のレッスンの「完了」ボタンを押すと、進み具合が円グラフに反映されます。クラスの付け外しで状態を管理し、完了数を数えてグラフを更新する考え方を学びます。

初級 jQuery プラグイン クラス操作
No.15

円グラフのプラグイン Circliful:進み具合をデータベースに保存する

レッスンの完了状態を ajax で PHP に送り、MySQL に保存します。ページを再読み込みしても進み具合の円グラフが残る、実用的な仕組みです。

中級 jQuery ajax PHP
No.16

ボタンを押すたびに、次の25件を読み込んで表示する

データベースの一覧を25件ずつ表示し、「次の25件」ボタンでページを切り替えずに続きを読み込みます。SQL の LIMIT と ajax を組み合わせた、「もっと見る」ボタンの作り方です。

中級 jQuery ajax PHP
No.17

WYSIWYGエディターに「画像の削除」機能を付ける

見たまま編集できる文章エディター(WYSIWYG)に、アップロードした画像を一覧から削除する機能を追加します。ajax でサーバーの PHP を呼び出し、ファイルを安全に削除する方法を学びます。

中級 jQuery ajax PHP

フォームと画像アップロード7本

「追加」ボタンで入力欄を増やすフォームから、画像の保存・縮小・データベース登録まで。

No.18

「行追加」ボタンで入力欄を増やす(テキスト)

ボタンを押すたびにフォームの入力欄が1行ずつ増える仕組みを作ります。増えた入力欄の値を、PHP で配列としてまとめて受け取る方法も学びます。

初級 jQuery PHP フォーム
No.19

「追加」ボタンで入力欄を増やす(テキスト&画像)

前のサンプルに「画像を選ぶ欄」を加えます。ファイルを送るためのフォームの書き方と、PHP の $_FILES に届くデータの形を確認します。

初級 jQuery PHP ファイル送信
No.20

選んだ画像を送信前にプレビューする

画像を選んだ瞬間に、その画像を画面に小さく表示します。JavaScript の FileReader を使い、サーバーに送る前のファイルを読み込む方法を学びます。

初級 jQuery FileReader ファイル送信
No.21

画像付きフォームをデータベースに保存・編集する

「行を追加」ボタンで増やせるテキスト+画像のフォームを作り、画像を3つのサイズに縮小して保存、データベースに登録します。表示画面と、画像の差し替え・削除ができる編集画面まで作る、少し本格的なサンプルです。

中級 PHP MySQL jQuery
No.22

プラグイン「Upload Thumbs」で画像をプレビューする

画像のプレビューを、jQuery プラグイン「Upload Thumbs」を使って1行で実現します。1枚だけ選ぶ欄と、複数枚をまとめて選ぶ欄の違いも確認します。

初級 jQuery プラグイン ファイル送信
No.23

「追加」ボタン+Upload Thumbs で画像の入力欄を増やす

「追加」ボタンで行を増やすフォームと、プラグイン「Upload Thumbs」のプレビューを組み合わせます。あとから追加した入力欄にプラグインを付ける方法がポイントです。

初級 jQuery プラグイン ファイル送信
No.24

プレビュー付き画像フォームをデータベースに保存する(Upload Thumbs 版)

前のサンプル(画像付きフォームの保存・編集)と同じ仕組みを、画像プレビューを jQuery プラグイン「Upload Thumbs」に任せて作ります。プラグインを使うと JavaScript がどれだけ短くなるかを比べてみましょう。

中級 PHP MySQL jQuery

PHP で便利ツールを作る3本

サーバー側のPHPで作る実用ツール。ファイル保存・短縮URL・Whois検索。

スマホアプリ用のAPI2本

スマホアプリからデータを読み書きするための、サーバー側の仕組み。

動作停止中のサンプル2本

外部サービス(API)の提供終了により、現在は動かせないサンプル。コードの考え方だけ解説します。

↑