PHPでHTMLのSELECT/OPTION値をNULLに設定することは可能?
結論から言うと、答えは「いいえ」です。HTMLフォームから送信されるPOST/GETの値がNULLになることはありません。送信される値はせいぜい空文字列("")までで、その空文字列を後からPHP側でnullや'NULL'に変換することは可能です。
なぜNULLにならないのか
HTTPリクエストを通じて送信されるフォームデータは、すべて文字列として扱われます。SELECT要素で値が選択されていない場合や、optionのvalue属性が空の場合でも、PHPでは空文字列として受け取るため、直接NULLが渡ることはありません。
サンプルコード
以下は、空文字列を受け取った場合にnullへ変換する基本的な例です。
if ($_POST['value'] === '') {
$_POST['value'] = null;
}
echo 'Null assigned';実行結果
上記のコードを実行すると、次のような出力が得られます。
Null assigned
補足:データベースにNULLを挿入する場合
データベースへの登録を目的としている場合は、PDOのプリペアドステートメントによるパラメータバインドを利用すると、PHPのnullをそのままSQLのNULLとして扱えます。また、empty()関数で空文字列かどうかを判定してから変換する方法も実務では広く使われています。
-
HTML DOMのoption valueプロパティとは?構文とサンプルコードで学ぶ使い方
HTML DOMのvalueプロパティは、<select>要素内の<option>要素が持つ値(value属性)を取得・変更するためのプロパティです。この値は、フォーム送信時にサーバーへ送られるデータとして使用されます。 基本情報 <option>要素にvalue属性が指定されている場合、その属性値を操作します。value属性が指定されていない場合は、<option>要素内のテキスト内容が代わりに返される点に注意してください。 構文 値を取得する場合 object.value 値を変更する場合 object.value = テキスト サンプ
-
HTMLのoption要素におけるvalue属性とは?基本構文とサンプルコードで解説
HTMLのvalue属性は、<option>要素に対してサーバーへ送信する値を指定するための属性です。フォーム送信時に、ユーザーが選択した選択肢の値がこの属性の内容として送られます。値そのものは画面上には表示されず、表示されるテキスト(ラベル)とは別に内部的なデータを持たせられるのが特徴です。基本構文value属性の基本的な書き方は以下のとおりです。<option value=テキスト></option>value属性には任意の文字列を指定できます。省略した場合は、<option>要素内のテキストがそのまま送信されます。使用例ここでは、好きな科目