読者です 読者をやめる 読者になる 読者になる

Webデザインの勉強 | フェリカテクニカルアカデミーWebサイト制作科サポートブログ

フォームの内容を受け取るプログラムを作る

PHP料理レシピ

フォームの内容を受け取るプログラムを作る

  • 「check.php
  • POST形式のデータの値は、「$_POST」というあらかじめ定義された変数(スーパーグローバル変数)を使用する
受け取ったデータを確認する
  • print_r
  • var_dump
<?php
print_r($_POST);
echo '<br>';
var_dump($_POST);


《プレビュー》

f:id:webmaster-web:20160717222901p:plain

受け取ったデータを出力する
  • 「check.php
  • echo文で出力する
<?php
$recipe_name = $_POST[ 'recipe_name' ];
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>レシピの入力内容確認画面</title>
</head>
<body>
<h1>レシピの入力内容確認画面</h1>
<p>料理名:<?php echo $recipe_name ?></p>
</body>
</html>

悪意のある入力を防ぐ

  • エスケイプ処理
  • htmlspecialchars関数
<?php
$recipe_name = htmlspecialchars($_POST['recipe_name'],ENT_QUOTES,'UTF-8');
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>レシピの入力内容確認画面</title>
</head>
<body>
<h1>レシピの入力内容確認画面</h1>
<p>料理名:<?php echo $recipe_name ?></p>
</body>
</html>

条件判別の書式を入力する

  • name属性「category」の値を受け取って判別する
<?php
if ($_POST['category'] === '1') 
  $category = '和食';
if ($_POST['category'] === '2') 
  $category = '中華';
if ($_POST['category'] === '3')
  $category = '洋食';
?>
  • name属性「difficulty」の値を受け取って判別する
<?php
if ($_POST['difficulty'] === '1') {
  $difficulty = "簡単";
} elseif($_POST['difficulty'] === '2') {
  $difficulty = "普通";
} else{
  $difficulty = "難しい";
}
?>

数字の入力結果を出力する

  • 数字をカンマで区切って表示する
  • カンマ区切りで表示するには「number_format関数」を使います
数字以外は受け付けないようにする
  • 指定した引数が数字か否かを判定する「is_numeric関数」を使う
<?php
if (is_numeric($_POST['budget'])) {
  $budget = number_format($_POST['budget']);
}
?>

改行を正しく処理してテキストエリアの内容を表示する

  • 改行を反映する「nl2br関数」を使う
<?php
$howto = nl2br(htmlspecialchars($_POST['howto'],ENT_QUOTES,'UTF-8'));
?>

まとめ

<?php
$recipe_name = htmlspecialchars($_POST['recipe_name'],ENT_QUOTES,'UTF-8');

if ($_POST['category'] === '1') 
  $category = '和食';
if ($_POST['category'] === '2') 
  $category = '中華';
if ($_POST['category'] === '3')
  $category = '洋食';

if ($_POST['difficulty'] === '1') {
  $difficulty = "簡単";
} elseif($_POST['difficulty'] === '2') {
  $difficulty = "普通";
} else{
  $difficulty = "難しい";
}
if (is_numeric($_POST['budget'])) {
  $budget = number_format($_POST['budget']);
}

$howto = nl2br(htmlspecialchars($_POST['howto'],ENT_QUOTES,'UTF-8'));
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>レシピの入力内容確認画面</title>
</head>
<body>
<h1>レシピの入力内容確認画面</h1>
<p>料理名:<?php echo $recipe_name ?></p>
<p>カテゴリ:<?php echo $category ?></p>
<p>難易度:<?php echo $difficulty ?></p>
<p>予算:<?php echo $budget ?></p>
<p>作り方:<?php echo $howto ?></p>
</body>
</html>
見栄えを整える
  • 出力を表組みにする
<?php
$recipe_name = htmlspecialchars($_POST['recipe_name'],ENT_QUOTES,'UTF-8');

if ($_POST['category'] === '1') 
  $category = '和食';
if ($_POST['category'] === '2') 
  $category = '中華';
if ($_POST['category'] === '3')
  $category = '洋食';

if ($_POST['difficulty'] === '1') {
  $difficulty = "簡単";
} elseif($_POST['difficulty'] === '2') {
  $difficulty = "普通";
} else{
  $difficulty = "難しい";
}
if (is_numeric($_POST['budget'])) {
  $budget = number_format($_POST['budget']);
}

$howto = nl2br(htmlspecialchars($_POST['howto'],ENT_QUOTES,'UTF-8'));
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>レシピの入力内容確認画面</title>
<style>
table {
  width: 300px;
  border: 1px solid #AAA;
  border-collapse: collapse;
}
th, td {
  border: 1px solid #AAA;
  padding:10px;
}
</style>
</head>
<body>
<h1>レシピの入力内容確認画面</h1>
<table>
<tr>
<th>料理名</th><td><?php echo $recipe_name ?></td>
</tr>
<tr>
<th>カテゴリ</th><td><?php echo $category ?></td>
<tr>
<th>難易度</th><td><?php echo $difficulty ?></td>
<tr>
<th>予算</th><td><?php echo $budget ?></td>
<tr>
<th>作り方</th><td><?php echo $howto ?></td>
</table>
</body>
</html>


《プレビュー》

f:id:webmaster-web:20160718173233p:plain