62814


**該当HTML**

[code]

    <input type="date" name="hoge">
    
[/code]

**条件**  
入力必須にはしたくない

**やりたいこと**  
未入力のまま送信した場合は、NULLを受け取りたい

* * *

**質問**  
・`<input type="date">`を未入力のまま送信した場合の値は何になりますか？ 空文字？  
・未入力のまま送信した場合の値を「NULL」もしくは「送信しない」にすることは出来ますか？  
・受信側で、「空文字」を受け取ってから「NULL」へ変換するしかない？


CC BY-SA 4.0
2020-02-06T00:28:53.010
62812
2020-02-06T01:17:49.847
7886
question
php html
<input type="date" name="hoge">を未入力のまま送信した場合は、NULLを受け取りたい


> を未入力のまま送信した場合の値は何になりますか？ 空文字？

空文字になります。

> ・未入力のまま送信した場合の値を「NULL」もしくは「送信しない」にすることは出来ますか？  
>  ・受信側で、「空文字」を受け取ってから「NULL」へ変換するしかない？

HTMLは空文字を送信してしまうのでJavascriptでPHP側でnull判定をさせるという方法ができます。

PHPでnullと判定させるには、そもそも送信させないという制御が必要なので条件でinputを追加したり消したりという処理をいれるのが良いと思います。

[code]

    $(".send_text").on("click", function(){
      var send_text_value = $(".send_text:checked").val();
      if (send_text_value == 1) {
        $("<input type='text' name='send_text_any' id='send_text_any'>").prependTo("#send_form")
      }else {
        $("#send_text_any").remove();
      }
    });
    
    $("#send_form").submit(function(){
      alert($('form').serialize());
      return false;
    });
[/code]

[code]

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <form action="post" id="send_form">
      <label><input type="radio" name="send_text" class="send_text" value="1">テキストを送信する</label>
      <label><input type="radio" name="send_text" class="send_text" value="0" checked="checked">テキストを送信しない</label>
      <input type="submit" value="送信" >
    </form>
[/code]

ただ上の処理はあくまで、  
（1）null  
（2）空文字  
を区別したいという処理のために行います。

もし、単純に空文字をnullとして処理したいということであれば受け手側で空文字をnullに変換するのが良いでしょう。  
というのは結局POSTする値はブラウザの処理になるので、Javascriptで空文字をnullになるように制御しても、改ざん（空文字送信）で結局はサーバサイドでサニタイズ（null化）が必要になります。


CC BY-SA 4.0
2020-02-06T01:17:49.847
62814
2020-02-06T01:17:49.847
22665
62812
answer