Webシステムを作る(2)

フォームからの情報を保存するフォーム

  • Web ブラウザ上から管理できる「登録画面」を作成します


《input.php

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="style.css">
<title>商品登録</title>
</head>
<body>
<div id="container">
<div id="head">
<h1>商品登録</h1>
</div>
<div id="content">
<p>登録する商品の情報を記入してください。</p>
<form id="frmInput" name="frmInput" method="post" action="input_do.php">
<dl>
<dt>
<label for="maker_id">メーカーID</label>
</dt>
<dd>
<input name="maker_id" type="text" id="maker_id" size="10" maxlength="10">
</dd>
<dt>
<label for="item_name">商品名</label>
</dt>
<dd>
<input name="item_name" type="text" id="item_name" size="35" maxlength="255">
</dd>
<dt>
<label for="price">価格</label>
</dt>
<dd>
<input name="price" type="text" id="price" size="10" maxlength="10"></dd>
<dt>
<label for="keyword">キーワード</label>
</dt>
<dd>
<input name="keyword" type="text" id="keyword" size="50" maxlength="255">
</dd>
<input type="submit" value="登録する">
</form>
</div>
</div>
</body>
</html>

※「登録ボタン」をクリックすると「input_do.php」に情報が送信される。




《input_do.php

<?php
require('dbconnect.php');

$sql = sprintf('INSERT INTO my_items SET maker_id=%d, item_name="%s", price=%d, keyword="%s"',
  mysql_real_escape_string($_POST['maker_id']),
  mysql_real_escape_string($_POST['item_name']),
  mysql_real_escape_string($_POST['price']),
  mysql_real_escape_string($_POST['keyword'])
);
mysql_query($sql) or die(mysql_error());
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="style.css">
<title>商品登録</title>
</head>
<body>
<div id="container">
<div id="head">
<h1>商品登録</h1>
</div>
<div id="content">
<p>商品を登録しました</p>
<p><a href="index.php">一覧に戻る</a></p>
</div>
</div>
</body>
</html>
  • 登録してみる


書式を整える printf
  • 引数の文字列にフォーマットを指定して出力します



printf ( フォーマットを示した変数, 変数, 変数 );


文字列関数におけるフォーマットの指定要素番号
要素番号 意味
1 幅の余りを埋める文字を指定 (空白または 0 を指定できる)
2 幅の中の文字列の配置を指定する (初期値は右寄せで . が左寄せ)
3 表示幅の桁数を数字で指定する
4 ドットに続いて小数点以下の桁数を数字で指定する
5 引数の型を指定する (引数の型は下の表を参照してください)


文字列関数におけるフォーマットの引数の型
引数の型 意味
% パーセント文字 (引数は不要)
b 引数を整数として扱い、バイナリの数値として表現する
c 引数を整数として扱い、ASCII値の文字として表現する
d 引数を整数として扱い、 10 進数として表現する
e 引数を整数として扱い、符号をつけずに10進数として表現する
f 引数を doubleとして扱い、浮動小数点数として表現する
o 引数を整数として扱い、8進数として表現する
s 引数を文字列として扱い表現する
x 引数を整数として扱い、16進数として小文字で表現する
X 引数を整数として扱い、16進数として大文字で表現する

mysql_real_escape_string
  • SQLを安全に保つ(SQLインジェクションを無害化する:サニタイズ(sanitize))
  • 変数の値をSQL文にセットするときに利用する
  • 変数の値は全て、出力する直前に適切にエスケープしなければならないために記述する