PHPとは?
- サーバサイドで利用されているスクリプト言語で動的なweb開発に適している
スクリプト言語 : PHP Ruby Python Javascript
- コンパイルが必要ない簡易的な言語
- 小規模開発に適する
- 画面にすぐに反映される
MAMP導入
- M : Macintosh PC
- A : Apache web server
- M : MySql
- P : PHP
変数
変数とは?
- 一時的にデータを保持的る箱のこと
なぜ変数を使うのか?
- データを使い回せる
- あとで変更したい時に簡単に変更できる
- 何のデータなのか他の人にわかりやすい
どんなときに変数を使うのか?
- データを使う時には基本的に変数を使う
変数名の付け方のルール(命名規則)
- 先頭に$マークが付くこと
- 半角数字と_(アンダースコア)のみであること
- $の後には数字が使えないこと
- 大文字と小文字が区別されること
- 他の人がわかりやすく、見やすい名前をつけること
test1.php
<?php
//変数
//ブログのタイトル
$title = "phpテスト";
$content = "PHPテストです";
$post_at = "2025/11/05";
$tag = ["PHP", "テスト", "ブログ"];
$status = true;
//定数
const ID = 1;
echo $ID;
echo $title;
echo $content;
echo $post_at;
print_r($tag);
//データ型
var_dump($title);
?>
配列
配列とは?
- 複数のデータを1つの変数に並べて保持できる箱
パターン① : array()
$blog = array(データ1,データ2,データ3,データ4,データ5);
パターン② : []PHP5.4以上だと使える
$blog = [データ1,データ2,データ3,データ4,データ5];
多次元配列とは?
- 配列の中に複数の配列が入っている配列
test2.php
<?php
//変数
//ブログのタイトル
const ID = 1;
$title = "phpテスト";
$content = "PHPテストです";
$post_at = "2025/11/05";
$tag = ["PHP", "プログラミング"];
$status = true;
const ID2 = 2;
$title2 = "phpテスト2";
$content2 = "PHPテストです2";
$post_at2 = "2025/11/05";
$tag2 = ["PHP2", "プログラミング2"];
$status2 = true;
//ブログ①
$blog1 = array(
'id' => ID,
'title' => $title,
'content' => $content,
'post_at' => $post,
'tag' => $tag,
'status' => $status
);
//配列の取り出し方
//配列の中から添え字orキーを指定する
//echo $blog1['title'];
//ブログ②
$blog2 = [
'id2' => ID2,
'title2' => $title2,
'content2' => $content2,
'post_at2' => $post2,
'tag2' => $tag2,
'status2' => $status2
];
//var_dump($blog2);
//多次元配列
$blogs = [$blog, $blog2];
var_dump($blogs);
?>
ループ処理
ループ処理とは?
- 設定した条件下で処理を繰り返す命令のこと
- 設定した条件がtrueの時は繰り返し、falseの時に止まる
・while(条件){繰り返す処理};
・do{繰り返す処理}whole(条件);
・for(条件){繰り返す処理}
・foreach(配列 as 変数名)
test3.php
<?php
//変数
//ブログのタイトル
const ID = 1;
$title = "phpテスト";
$content = "PHPテストです";
$post_at = "2025/11/05";
$tag = ["PHP", "プログラミング"];
$status = true;
const ID2 = 2;
$title2 = "phpテスト2";
$content2 = "PHPテストです2";
$post_at2 = "2025/11/05";
$tag2 = ["PHP2", "プログラミング2"];
$status2 = true;
//ブログ①
$blog1 = array(
'id' => ID,
'title' => $title,
'content' => $content,
'post_at' => $post,
'tag' => $tag,
'status' => $status
);
//配列の取り出し方
//配列の中から添え字orキーを指定する
//echo $blog1['title'];
//ブログ②
$blog2 = [
'id2' => ID2,
'title2' => $title2,
'content2' => $content2,
'post_at2' => $post2,
'tag2' => $tag2,
'status2' => $status2
];
//var_dump($blog2);
//多次元配列
$blogs = [$blog1, $blog2];
//var_dump($blogs);
//ループ処理
//①バリューのみの出力
foreach ($blog1 as $blog) {
echo $blog;
}
//②キーとバリューを出力
foreach ($blog2 as $key => $value) {
echo $key . $value;
}
//多次元配列blogsを展開する
foreach ($blogs as $blog) {
foreach($blog as $value){
echo $value;
}
}
?>
フォーム処理
PHPでフォームの値を受け取るための定義済みの変数
① $_POST・・・methodがpostの値を並列で受け取る
② $_GET・・・methodがgetの値を並列で受け取る
form.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BlogForm</title>
</head>
<h2>ブログフォーム</h2>
<form action="blog.php" method="POST">
<p>ブログタイトル:</p>
<input type="text" name="title" />
<p>ブログ本文:</p>
<textarea name="content" id="content" cols="30" rows="10"></textarea>
<br>
<input type="submit" value="送信" />
</form>
</body>
</html>
blog.php
<?php
$blog = $_POST;
foreach ($blog as $key => $value) {
echo $key . ':' . htmlspecialchars($value, ENT_QUOTES,'UTF-8');
}
?>
HTTPとは?
- ハイパー・テキスト・トランスファー・プロトコルの略
GETとPOSTの違い
- GET
URLで値が送信される(クエリストリング)
http://localhost:8888/blog.php?title=こんにちは&content=こんにちは
画面表示のみや検索などで利用
- POST
リクエストのボディにデータが入られて送られる
http://localhost:8888/blog.php
データを送る場合は基本POST
form.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BlogForm</title>
</head>
<h2>ブログフォーム</h2>
<form action="blog.php" method="POST">
<p>ブログタイトル:</p>
<input type="text" name="title" />
<p>ブログ本文:</p>
<textarea name="content" id="content" cols="30" rows="10"></textarea>
<br>
<input type="submit" value="送信" />
</form>
</body>
</html>
blog.php
<?php
$blog = $_POST;
foreach ($blog as $key => $value) {
echo $key . ':' . htmlspecialchars($value, ENT_QUOTES,'UTF-8');
}
?>
条件分岐
ifとは?
- 条件によって処理を分岐させる構文
- 条件式がtrueの時に実行し、falseの時に無視する
真偽値とは?
- 真(true)か偽(false)を示す値のこと
- プログラミングではboolean型というデータ型を持つ
- 通常、比較演算子の結果として制御構造に渡される
- 比較演算子
$a == $b $aと$bが等しいとTRUE
$a === $b $aと$bが等しくかつ同じ型だとTRUE
$a!= $b $aと$bが等しくないとTRUE
$a < $b $aと$b未満だとTRUE
$a <= $b $aが$b以下だとTRUE
form.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BlogForm</title>
</head>
<h2>ブログフォーム</h2>
<form action="blog.php" method="POST">
<p>ブログタイトル:</p>
<input type="text" name="title" />
<p>ブログ本文:</p>
<textarea name="content" id="content" cols="30" rows="10"></textarea>
<br>
<input type="radio" name="publish_status" value="publish" />公開
<input type="radio" name="publish_status" value="un_publish" />非公開
<br>
<input type="submit" value="送信" />
</form>
</body>
</html>
blog.php
<?php
$blog = $_POST;
if($blog["publish_status"] == "un_publish") {
foreach ($blog as $key => $value) {
echo $key . ':' . htmlspecialchars($value, ENT_QUOTES,'UTF-8');
}
} elseif($blog['publish_status'] === 'publish') {
echo '記事がありません。';
} else {
echo '記事がありません。';
}
?>
HTML埋め込み
下記の2つのルールを守るだけで埋め込める
- HTML内で、PHPを使いたい箇所をで囲んで記述
- ファイルの拡張子を.phpとする
form.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BlogForm</title>
</head>
<h2>ブログフォーム</h2>
<form action="blog.php" method="POST">
<p>ブログタイトル:</p>
<input type="text" name="title" />
<p>ブログ本文:</p>
<textarea name="content" id="content" cols="30" rows="10"></textarea>
<br>
<p>投稿日:</p>
<input type="date" name="post_at" />
<br>
<p>カテゴリ:</p>
<select name="category_id">
<option value="日常">日常</option>
<option value="仕事">仕事</option>
</select>
<br>
<input type="radio" name="publish_status" value="publish" checked/>公開
<input type="radio" name="publish_status" value="un_publish" />非公開
<br>
<input type="submit" value="送信" />
</form>
</body>
</html>
blog.php
<?php
$blog = $_POST;
if($blog["publish_status"] === "un_publish") {
echo '記事がありません。';
return;
}
// if($blog["publish_status"] === "un_publish") {
// foreach ($blog as $key => $value) {
// echo $key . ':' . htmlspecialchars($value, ENT_QUOTES,'UTF-8');
// }
// } elseif($blog['publish_status'] === 'publish') {
// echo '記事がありません。';
// } else {
// echo '記事がありません。';
// }
// ?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ブログ</title>
</head>
<body>
<h2><?php echo htmlspecialchars($blog['title'],ENT_QUOTES,'UTF-8'); ?></h2>
<p>投稿日:<?php echo htmlspecialchars($blog['post_at'],ENT_QUOTES,'UTF-8'); ?></p>
<p>カテゴリ:<?php echo htmlspecialchars($blog['category'],ENT_QUOTES,'UTF-8'); ?></p>
<br>
<p><?php echo htmlspecialchars($blog['content'],ENT_QUOTES,'UTF-8'); ?> ?></p>
</body>
</html>