20201001 授業メモ
授業内容
mb_convert_kana
・指定した文字列を半角から全角に変換することができる
・変換対象は、全角数字、半角カナ、半角数字、ひらがな、カタカナ
mysqli_real_escape_string
■labelタグの使い方
1.文字とフォームパーツをlabelタグで囲んでグループ化する
「フォームパーツのID属性」
をそろえて関連があることを定義する事。
<label>
項目1
</label>
■onclick属性
・JavaScript専用属性
・イベント用属性
場所:
種類(タイミング):クリックしたとき
処理:属性値に記述されている
return confirm('一覧に戻りますか?')
confirmメソッド:確認ダイアログ画面表示
「ok」→戻り値「true」
「キャンセル」→戻り値「false」
■今回のa要素はくりっくで確認ダイアログ画面表示
「ok」→リンク先に移動する
「キャンセル」→リンク先に移動しない
下記二つのファイルは入力フォーム作成用
〇entry.phpより
<?php
// デバッグ領域表示・非表示
$debug = true;
// 自作関数定義を読み込む
// いつものDB接続
or die('接続不可');
mysqli_select_db($dbobj, 'practice');
mysqli_set_charset($dbobj, 'utf8');
// SQL文をDBに投げる
or die(mysqli_error($dbobj));
// 下記テーブル情報を変数trSet(traderSet)に代入
// +------+----------+---------+--------------+
// | m_id | company | address | tell |
// +------+----------+---------+--------------+
// | 1 | ペン工房 | 東京都 | 03-0000-0000 |
// | 2 | 小鳥文具 | 栃木県 | 028-111-1111 |
// | 3 | 黒木屋 | 島根県 | 0853-55-5555 |
// +------+----------+---------+--------------+
?>
<!DOCTYPE html>
<html>
<head>
<title>商品管理システム</title>
</head>
<body>
<div class="debug">
</div>
<div id="container">
<div id="head">
<h1>新規登録</h1>
</div>
<div id="content">
<fieldset>
<legend>新しい商品の情報</legend>
<dl>
<dt><label for="item">商品名<span>※必須</span></label></dt>
<dd><input name="item" type="text" id="item" size="20" maxlength="10"></dd>
<dt><label for="price">価格</label></dt>
<dd><input name="price" type="text" id="price" size="10" maxlength="10"></dd>円
<dt><label for="stock">在庫</label></dt>
<dd><input name="stock" type="text" id="stock" size="10" maxlength="10"></dd>
<dt><label for="keyword">キーワード</label></dt>
<dd><input name="keyword" type="text" id="keyword" size="50" maxlength="255"></dd>
</dl>
</fieldset>
<fieldset>
<legend>メーカー情報</legend>
<dl>
<dt>メーカー<span>※必須</span></dt>
<label>
</label>
</dd>
</dl>
</fieldset>
</form>
<!--#content-->
</div>
<!--#container-->
</div>
</body>
</html>
〇insert.phpより
<?php
$debug = true;
// 三項演算子で値が届いているか確認したうえで各変数に値を代入
// 値が届いていたら「届いた値」を代入
// 値が届いていなかったら「NULL」を代入
$item = isset($_POST['item']) ? $_POST['item'] : NULL;
$price = isset($_POST['price']) ? $_POST['price'] : NULL;
$stock = isset($_POST['stock']) ? $_POST['stock'] : NULL;
$keyword = isset($_POST['keyword']) ? $_POST['keyword'] : NULL;
$maker = isset($_POST['maker']) ? $_POST['maker'] : NULL;
// trimとは
// 文字列の先頭・末尾にあるホワイトスペースを取り除く
// ホワイトスペースとは:半角スペース、タブ、改行など
$item = trim($item);
$price = trim($price);
$stock = trim($stock);
$keyword = trim($keyword);
$maker = trim($maker);
$message = ''; //ブラウザ表示用メッセージ
$btn = ''; //ブラウザ表示用リンク
if ($item == '' or $maker == '') {
// 必須項目である商品名($item)とメーカー($maker)が空文字もしくはNULL
// ではないことを確認
// 確認できたらエラー時の処理
$message = '必須項目を入力してください';
フォームに戻る</a>';
} else {
// 確認できなかったらOKの処理
// DB接続
or die('接続不可');
mysqli_select_db($dbobj, 'practice');
mysqli_set_charset($dbobj, 'utf8');
// セキュリティ対策(SQLインジェクション対策)
// mysqli_real_escape_string関数
// 注意:第一引数に接続許可証が必要なのでDB接続後にしか使えない。
// 第一引数:接続許可証
// 第二引数:変数対象の文字列
// 戻り値:クォートエスケープ後の文字列
//DBでは意味がある記号のクォート文字をエスケープする
// 文字列開始・終了のクォートを悪用した攻撃がある
// DELETEの時に実演するので保留。
// mb_convert_kana関数
// 文字列を全角・半角等に変換する。
// 第一引数:変数対象文字列
// 第二引数:変換ルールを指定するオプション
// 「n」全角数字を半角数字に変換するオプション
// ユーザ入力する値の全角・半角のゆれを
// mb_convert_kana関数で統一することができる
$item = mysqli_real_escape_string($dbobj, $item);
$price = mysqli_real_escape_string($dbobj, mb_convert_kana($price, 'n'));
$stock = mysqli_real_escape_string($dbobj, mb_convert_kana($stock, 'n'));
$keyword = mysqli_real_escape_string($dbobj, $keyword);
$maker = mysqli_real_escape_string($dbobj, mb_convert_kana($maker, 'n'));
// sprint(string print formatted)関数
// 第一引数:フォーマット対象文字列
// 必要に応じて虫食い部分を作成できる
// 虫食い部分には「%s」「%d」等を指定
// 第二引数以降:フォーマット対象文字列に追加する値
'insert into stationery SET
item="%s",price=%d,stock=%d,keyword="%s",maker=%d',
$item,
$price,
$stock,
$keyword,
$maker,
);
$message = '新規登録しました';
}
?>
<!DOCTYPE html>
<html>
<head>
<title>商品管理システム</title>
</head>
<body>
<div class="debug">
</div>
<div id="container">
<div id="head">
<h1>新規登録</h1>
</div>
<div id="content">
<!--#content-->
</div>
<!--#container-->
</div>
</body>
</html>