20200911 POST形式の送受信 他、osaraipluginの答え合わせなど
授業内容
要約
〇ファイルの読み込み
☆require'読み込むファイルパス';→読み込み失敗した時は処理が停止
require_once'読み込むファイルパス';→1回だけ読み込み
☆include'読み込むファイルパス';→読み込み失敗した時でも処理は続行
include_once'読み込むファイルパス';→1回だけ読み込み
〇POST形式の送受信
受け取る送信名がGETと違うだけ
例題)99-13.phpより
<?php
// 商品リスト
$productList = [
[
'name' => 'ノート',
'price' => 100,
'stock' => 10,
],
[
'name' => 'はさみ',
'price' => 200,
'stock' => 3,
],
[
'name' => '計算機',
'price' => 1500,
'stock' => 0,
],
];
// ナビリスト
$navList = [
'ノート',
'はさみ',
'計算機',
];
// エラーメッセージ
$error = ;
// 掲載商品番号受け取り
// 数字が届く場合
// 1、値が届いている?→isset命令で確認
// 2、データ型はおk?→ctype_digitで確認
// 3、数値の範囲はおk?→比較演算子の使用
if (isset($_GET['item'])) {
// ここのitemはクエリ文字列に記述されているitemを拾ってきている
$productNo = $_GET['item'];
if (ctype_digit($productNo)) {
if ($productNo < 0 || $productNo > count($productList) - 1) {
$error = 'Error03:該当商品がありません';
}
} else {
$error = 'Error02:該当商品がありません';
}
} else {
$error = 'Error01:該当商品がありません';
}
// 消費税
$tax = 0.1;
// タイトルタグ
$title = '';
if (count($error) === 0) {
// 掲載商品情報
$productName = $productList[$productNo]['name'];
$productImg = $productList[$productNo]['img'];
$productPrice = $productList[$productNo]['price'];
$productStock = $productList[$productNo]['stock'];
// 送料
$shipping = '全国一律500円';
if ($productPrice >= 1000) {
$shipping = '1000円以上の商品は送料無料';
}
// 在庫アイコン
$stockIcon = '';
if ($productStock <= 0) {
$stockIcon = '<span class="soldout">売り切れ</span>';
} else if ($productStock <= 5) {
$stockIcon = '<span class="few">在庫僅少</span>';
}
// 共通メッセージ
$message = '<p>この商品は' . $productName . 'です。</p>';
// おすすめ商品
$recommend = '<h2>おすすめ商品</h2>';
$recommend .= '<ul>';
for ($i = 0; $i < count($navList); $i++) {
if ($i != $productNo) {
}
}
$recommend .= '</ul>';
// タイトルタグ
$title = "便利な{$productName}";
}
// phpゾーンは受信後の処理項目を記述
// 配列リストの管理もこの領域で行う
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div class="header">
<div class="inner">
<div class="logo">
<a class="logo_link" href="#">
ショッピングサイト
</a>
</div>
<div class="nav">
<li class="nav_listItem w33-pc">
</li>
<!-- liのリスト表示
→foreach文で繰り返し表示($navListの連想配列)
-->
</ul>
</div><!-- .nav -->
</div><!-- .inner -->
</div><!-- .header -->
<div class="debug">
<div class="inner">
<div class="debug_body">
<h2 class="debug_title">$_GET</h2>
</div><!-- .debug_body -->
</div><!-- .inner -->
</div><!-- .debug -->
<div class="product">
<div class="inner">
<div class="product_body">
<div class="error">
<ul class="error_list">
</ul>
</div><!-- .error -->
</div><!-- .product_body -->
<div class="product_body">
<div class="product_image">
</div><!-- .product_image -->
<div class="product_text">
</div><!-- .product_text -->
<div class="product_price">
</div><!-- .product_price -->
<div class="product_shipping">
</div><!-- .product_shipping -->
<div class="product_stock">
</div><!-- .product_stock -->
</div><!-- .product_body -->
<div class="product_footer">
<div class="product_text">
</div><!-- .product_text -->
</div><!-- .product_footer -->
</div><!-- .inner -->
</div><!-- .product -->
<div class="footer">
<div class="inner">
<div class="copyright">
</div><!-- .copyright -->
</div><!-- .inner -->
</div><!-- .footer -->
<!-- 表示関連の記述 -->
<!-- PHP領域側の処理を表示させるための領域を準備する -->
</body>
</html>