Help us understand the problem. What is going on with this article?

HTMLの input type="checkbox" の値をPHPに渡すときに詰まった

More than 1 year has passed since last update.

HTMLのinputタグの値をPHPに渡したい。
type="checkbox"で「チェックしていない」、ってことをどうしても渡したいんだ。

何がしたいか

社員名簿の登録画面のようなものを作っていて、登録時に管理者権限のありなしを入れたい。
集計表には下表のように0,1で表示したいが、HTMLでは0,1の選択ではなくチェックマークにしたい。

社員ID 名前 管理者権限
1 乾 巧 1
2 草加 雅人 1
3 木場 勇治 1
4 海堂 直也 0

やってみた

まず基本通りにやってみる。

index.html
管理者権限:<input type="checkbox" name="kanri_flg">   ※管理者にはチェックする

inputのtypeをチェックボックスにして渡す。
これで試すと、チェックマークを付けた場合は集計に1と出るものの、チェックマークを付けなかった場合に"0"を表示してくれない。
どうやらcheckboxはチェックをつけないとまるで存在しないかのような挙動を見せる。

解決策

valueを持たせてみた。

どうやったか

同じnameを持つinputタグを2つ作り、上段のタグにvalue="0"を設定し、typeをhiddenにして隠す。
下段のタグにはvalue="1"を設定。
もしチェックマークがあれば、下段のinputタグが有効になって、上段を上書きして渡してくれるようにした。

html.index.html
<input type="hidden" name="kanri_flg" value="0">
管理者権限:<input type="checkbox" name="kanri_flg" value="1">   ※管理者には☑する

inputタグのvalueの値は文字列(String)として渡される

はじめはvalueにtrue入れたりしてみたけど、どうも正しく渡してくれない。というかvar_dumpで確認するとString(4)と書いてある。
checkboxなので、真偽値(boolean)なのかと思っていたが、どうやら文字列(String)として扱われるらしい。

あとがき

HTMLの勉強中は気にかけなかったことも、PHPとの連携だと細かく見ていかなければいけない。
ちなみにcheckboxだとvalueは必須ではないらしい。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away