Javascript:JavascriptでPOSTの値を追加する

Javascriptでsubmitボタン押下時にPOSTされるデータを追加したい場合があります。
フォーム内に複数のボタンを設置した際に押されたボタンによってPOSTするデータを追加したい場合あったので、その時のメモです。


■ Javascript

function funcBtn() {
	// エレメントを作成
	var ele = document.createElement('input');
	// データを設定
	ele.setAttribute('type', 'hidden');
	ele.setAttribute('name', 'hoge');
	ele.setAttribute('value', 'テスト');
	// 要素を追加
	document.myForm.appendChild(ele);
}

■ HTML

<form method="post" id="myForm" name="myForm">

    (省略)

    <input type="submit" name="btn" value="ボタン" onclick="funcBtn();" />

</form>

ボタン押下時、hiddenでhogeにテストという値がPOST送信されます。


PHP:phpで数値をチェックする方法

phpでシステムを実装する際に数値かどうかをチェックすることはよくあると思います。
phpでは数値文字列かを判定するis_numeric関数がありますが、is_numeric関数は小数点や16進数なども数値として判定します。
完全に数値だけを判定したい場合に下記の正規表現を使うことで数値かどうか判定することができます。
正規表現を使うことによって判定する内容を編集することができるので応用が効くと思います。


is_numeric()関数

変数または指定した値が数値、数値文字列かどうか判定します。
数値の場合はtrueを返し、数値ではない場合はfalseを返します。


■ 使用方法(is_numeric)

・数値の場合

	$num = 000;
	if (is_numeric($num)) {
		echo '数値です';
	}
	else {
		echo '数値ではありません';
	}
数値です

・小数点の場合

	$num = 100.1;
	if (is_numeric($num)) {
		echo '数値です';
	}
	else {
		echo '数値ではありません';
	}
数値です

・数値文字列の場合

	$num = '100';
	if (is_numeric($num)) {
		echo '数値です';
	}
	else {
		echo '数値ではありません';
	}
数値です

・「+」、「-」付きの場合

	$num = '-100';
	if (is_numeric($num)) {
		echo '数値です';
	}
	else {
		echo '数値ではありません';
	}
数値です

・16進数の場合

	$num = '0xFF';
	if (is_numeric($num)) {
		echo '数値です';
	}
	else {
		echo '数値ではありません';
	}
数値です

・上記以外の場合(数値ではない場合)

	$num = 'aaa';
	if (is_numeric($num)) {
		echo '数値です';
	}
	else {
		echo '数値ではありません';
	}
数値ではありません

■ 使用方法(正規表現)

正規表現を使用し、0~9の連続した文字のみtrueを返します。

preg_match("/^[0-9]+$/", '判定したい文字列')

・数値の場合

	$num = 000;
	if (preg_match("/^[0-9]+$/", $num)) {
		echo '数値です';
	}
	else {
		echo '数値ではありません';
	}
数値です

・小数点の場合

	$num = 100.1;
	if (preg_match("/^[0-9]+$/", $num)) {
		echo '数値です';
	}
	else {
		echo '数値ではありません';
	}
数値ではありません

・数値文字列の場合

	$num = '100';
	if (preg_match("/^[0-9]+$/", $num)) {
		echo '数値です';
	}
	else {
		echo '数値ではありません';
	}
数値です

・「+」、「-」付きの場合

	$num = -100;
	if (preg_match("/^[0-9]+$/", $num)) {
		echo '数値です';
	}
	else {
		echo '数値ではありません';
	}
数値ではありません

・16進数の場合

	$num = '0xFF';
	if (preg_match("/^[0-9]+$/", $num)) {
		echo '数値です';
	}
	else {
		echo '数値ではありません';
	}
数値ではありません

・上記以外の場合(数値ではない場合)

	$num = 'aaa';
	if (preg_match("/^[0-9]+$/", $num)) {
		echo '数値です';
	}
	else {
		echo '数値ではありません';
	}
数値ではありません