Buravo46's Note

学んだ事を書いていくブログです。

【PHP】フォームからの入力を連想配列として送信する方法

経緯

HTMLのフォームから送信されたデータを受信する場合、$_POST$_GETで受け取って使用すると思います。 例えばデータを使用する場合は$_POST['id']みたいに連想配列として使用すると思いますが、 他にも$_POST['name']$_POST['password']みたいに同じ分類でデータ送信をしたいとなると 一々各データを受け取らないといけないので面倒なことになります。 これをまとめて受け取りやすくしようと思い、連想配列として受け取ろうとしました。

概要

HTMLのフォーム名を連想配列のように記述してデータを送信し、データ受信時にまとめて受け取れるようにします。

方法

  1. HTMLに<form action="URL" method="メソッド名"><input type="text" name="配列名[キー名]"></form>と記述して、データ入力フィールドを作成
  2. HTMLに<input type="submit" name="ボタン名" value="ボタンに表示する値">と記述して、データ送信ボタンを作成
  3. PHP$変数名 = $_POST['配列名'];もしくは$変数名 = $_GET['配列名'];と記述して、データを受信
  4. あとは$入力情報を格納する変数名 = $変数名['キー名']と記述して、連想配列として使用

具体例

フォームから入力された内容を連想配列として送信するHTMLの例です。 アカウントという分類でID、ユーザ名、パスワードを送信しています。 注意してほしいことは、<input type="text" name="account['name']">連想配列のように記述すると使用できないということです。 <input type="text" name="account[name]">と記述する必要があります。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title></title>
<meta name="keywords" content="">
<meta name="description" content="">
</head>
<body>

<form action="index.php" method="POST">
<p>
ID : 
</p>
<input type="text" name="account[id]">
<p>
UserName : 
</p>
<input type="text" name="account[name]">
<p>
Password : 
</p>
<input type="text" name="account[password]">
<input type="submit" name="Submit" value="Submit">
</form>

</body>
</html>

POSTメソッドで送信されたデータを連想配列としてまとめて受け取るPHPの例です。 POSTメソッドで送信されたアカウント情報を一旦受け取り、受け取った変数で連想配列として使用しています。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title></title>
<meta name="keywords" content="">
<meta name="description" content="">
</head>
<body>

<?php
$account = $_POST['account'];
print('ID :'.$account['id'].'<br>');
print('UserName :'.$account['name'].'<br>');
print('Password :'.$account['password'].'<br>');
?>

</body>
</html>

まとめ

分類分けできそうな入力内容は上記のように、連想配列のような形式でまとめることができます。 一旦格納することによって、受信したデータをまとめて制御することができて中々便利だと思います。