【PHP】フォームで送信されたデータを受け取って処理をする

php
書いてる人
あいりゅー

プログラミングを学びながら更新しています。
iPhone/iPad/Mac/Apple WatchなどのApple製品はこちらで主に更新しています。
麻雀の反省をひたすら掲載してるブログもやってます。

あいりゅーをフォローする

このページについて

このページではPHPでHTMLのフォームから送信されたデータを受け取り、処理をする流れを解説しています。

はじめに

このページではPHPとHTMLの2つの連携をするのでどちらも知っていて、方法が知りたいという方向けの解説記事になります。

HTML側で行うこと

まずはデータを送るためのフォームをHTMLで作成します。formタグ/inputタグ/buttonタグ/labelタグを使った基本的なものを使って説明します。

まずはフォームの土台となるformタグを作成。その中にユーザーの入力を受け付けるinputタグを入れます。そしてそれぞれの入力エリアに何を入力してほしいかを明記するlabelタグを入れます。

<form method="post" action="phpのアドレス">
<input type="text" name="name1">
<label>名前</label>
<button type="submit">送信</button>
</form>

こんな感じのシンプルなものでOKです。そしてこれを実際に見てみるとこんな感じになります。

簡単な送信フォーム

実際には入力内容を確認するとかして第三者からのコードを実行させないようにセキュリティを考える必要があるんですが、今回はこの質素なフォームを使って解説します。

まずはformタグmethod属性はpostを選びます。これにより送信したい内容を秘密に送る事ができます。反対の性質を持つgetはURLに入力内容が表示されるので、バレてもいい内容を扱う時に使いましょう。

inputタグname属性は必須です。というのも、送信されたデータをPHPで受け取ると連想配列の形で受け取ります。連想配列はキー:値のセットのことですが、この時のキーになるのがname属性となります。つまりこの段階で言えば、name1=>ユーザーの入力内容となります。

buttonタグは送信機能を持つsubmitにしています。ボタンを押せばデータをformタグaction属性の場所へと送り届けます。送った後はページを再度読み込みます。これを読み込まずにその場で表示する場合はJavaScriptを使い、buttonのtypeをbuttonに変更します。

PHP側で行うこと

PHP側で行うことは、まずはフォームからのデータを受け取る変数を使わなければなりません。その便利な変数は、$_POSTです。これは元々用意されている変数なので誰でも使う事ができます。

上でも軽く触れましたが、このPHPへデータが送られると連想配列の形式になります。なので上のフォームで名前に何かしらのワードを入れて受け取ると、name1=>ユーザーの入力内容となります。

この連想配列をforなどで繰り返し処理しても良いですし、内容が多く無いのであればシンプルに展開して終了でも良いと思います。以下はサンプルのフォームで受け取った名前をそのまま出力するだけのコードです。

<?php
echo $_POST['name1'];
?>

連想配列は変数[キー]でアクセスする事ができます。そのため、$_POST[‘name1’]という書き方でOKです。

実際に試してみる

実際に試した結果はこのようになります。まずはHTMLで名前を適当に入力して送信します。

HTMLフォームに入力する

そして送信ボタンを押します。ここからPHP側で処理が行われます。結果はechoの一行だけなのでなんともシンプルですがちゃんと入力したものが表示されます。

フォームに入力した内容が表示されます

これだけだと分かりにくいので、PHP側のコードを少し増やしてみます。

<?php
echo '入力された内容は'.$_POST['name1'].'です。';
?>

入力された内容をそのまま表示するだけでなく、前後に文を備えてみます。結果は先ほどと対して変わりませんけどね。次はメガカメックスを入力して送信しました。

入力内容を文中に入れることもできます

フォームの複数のデータを扱う

今まではシンプルなフォームのデータのみを扱う方法でしたが、フォームから送られてくる複数のデータを扱う場合を解説します。フォームは以下のようにしたとします。

<form method="post" action="/postecho.php">
<label>通常の姿</label>
<input type="checkbox" name="ch1[]" value="通常の姿"><br>
<label>メガシンカ</label>
<input type="checkbox" name="ch1[]" value="メガシンカ"><br>
<label>キョダイマックス</label>
<input type="checkbox" name="ch1[]" value="キョダイマックス"><br>
<br>
<button type="submit">送信</button>
</form>

完成図

フォームの完成図

そしてこれを受け取るphpの中身がこちら

<?php
$x = $_POST['ch1'];
foreach ($x as $y) {
echo '選択したのは'.$y.'です。';
}
?>

先ほどと違い、チェックされたものを全て返すためforeachでループ処理を行なっています。

1つのみ選択したら

1つ選択した場合は1つのみ返す

2つ選択したら

2つ選択しても全て取得・表示される

このようにしっかりと取得した値を返してくれます。ちなみに取得した結果を表す時に使われるのはvalue属性です。この例でいうとvalue=”通常の姿”など設定しています。それらが使用されます。

このチェックボックスの取得ですが、HTML側で一つ注意する点があります。それはname属性のところです。通常は[]は使わないんですが、チェックボックスやラジオボタンで選択したものを扱うときはこの[]を使います。これは配列に挿入するという意味になるので、選択したものが配列に入れられていきます。

そのためPHP側でch1という指定をしてforeachまで行えるようになっているというわけです。

まとめ

HTMLで作成・入力されたフォームのデータをPHPで受け取るにはまず$_POSTという変数を使います。そして$_POSTは連想配列で格納されるので、任意のname属性で取り出す事ができます。

複数の選択(チェックボックス)やラジオボタンを取得する場合、まずHTML側のname属性で[]を付与して配列に格納できるようにしてから、PHP側で取得して処理を行います。

HTMLの基礎
HTMLってどんな言語?書き方やHTMLファイルの作成方法などを解説。
HTMLタグで押さえておきたいポイント3選
HTMLタグを使う上で必ず押さえておいてほしいポイント3つの解説です。
HTMLタグと属性一覧
HTMLタグと属性の一覧です。
tableタグ生成ページ
tableタグの基本形を生成できるページです。
ulタグ・olタグ生成ページ
ulタグolタグの基本形を生成できるページです。
phpの基礎
phpとは?JavaScriptとの違いは?みたいなことから、基本の書き方などを解説。
echoとprint
画面に文字を出力する2種類の言語構造の使い方
変数
phpで使える変数の扱い方などを解説しています。
変数のスコープ(有効範囲)
変数のスコープについての解説です。
var_dump
変数の情報を見ることができる関数
print_r
変数の情報をわかりやすい形式で表示する関数
配列と連想配列
配列と連想配列の書き方と、便利な関数の解説など。
key
連想配列のキーを返してくれます。内部ポインタ関係あり。
count
配列や連想配列の要素数を数えてくれる関数の使い方解説。
ソート関数
配列に対してソートを行う関数の中から、代表的な5つの使い方解説です。
array_reverse
配列の中身の順番を反転させる関数です。
array_chunk
配列を指定した数で分割させるarray_chunk関数の使い方解説です。
array_combine
2つの配列を足して1つの連想配列にする関数です。
array_diff
2つの配列を比較して、存在しない値を出力する関数
array_push
配列に対して後方に要素を追加する関数
array_unshift
配列に対して先頭に要素を追加する関数。
array_shift
配列の先頭の要素を取り出す関数。
array_merge
複数の配列を統合して1次元の配列にする関数
array_intersect
2つの配列を比較して、両方に共通するものを出力する関数
include
includeを使って別のphpファイルを読み込む方法の解説。
if文
if文を使って処理を変更させる方法の解説。
switch文
switch文を使って複数の処理分岐を行わせたい時に使います。
forループ
forループを使って同じ処理を行わせる方法の解説です。
whileループ
whileループを使って同じ処理を行わせる方法の解説と注意点。
do-whileループ
do-whileループを使って同じ処理を行わせる方法の解説です。
foreachループ
foreachループを使って配列内のアイテム全てに処理を行う方法の解説です。
continue
ループ処理の残りをスキップしつつ、ループの先頭に戻る制御構造
ループのネスト構造(入れ子)
ループの中にループを入れる書き方や考え方の解説。
function
functionを使って自作の関数を作成・使用する方法の解説。
引数の種類と書き方解説
functionで扱う引数の種類と書き方を解説
return
returnの使い方と関数での使い方解説。
class
classを作成して変数と関数を1つにまとめる方法と使い方の解説。
constructとdestruct
classのインスタンス作成と同時に処理を行うconstructと、スクリプトの終了と同時に実行するdestructの解説です。
インターフェイス
インターフェイスという用語の解説と、実際の使い方解説
トレイト
コードを再利用するのに便利なトレイトの解説です。
列挙型
プログラム中で使う変数名をあらかじめ定義しておく。そんな感じの型。
PDOを使ってMySQLへ接続
PDOを使ってMySQLへ接続し、データを取得する方法の解説です。
データの加工と表示
PDOでデータベースから取得したデータを加工して表示する方法の解説です。
HTMLフォームのデータ受け取りと表示
HTMLで作ったフォームからのデータの受け取り方法と、その表示方法の解説です。
タイトルとURLをコピーしました