【问题标题】:How to update database using checkbox in form in php mysql如何在php mysql中使用表单中的复选框更新数据库
【发布时间】:2021-04-12 20:57:52
【问题描述】:

我是 php 和 html 的新手,我的项目需要一些帮助。我在网上看到了一些例子,但我不太明白。我想要做的是使用带有复选框的表单来更新数据库。如果选中,则数据库应更新为 1。否则,如果未选中,则将其更新为 0。目前,我的问题是不知道如何制作它,以便代码将使用 1 或 0 更新数据库,如果它是选中或未选中。我知道我必须创建一个单独的 php 文件才能做到这一点,但我不知道该怎么做。下面是我用于表单的代码。请帮帮我。

<i class="icon-book text-muted"></i> &nbsp; Select modules to enroll student in:<br><br>
                                        <div class="form-group has-feedback has-feedback-left" style="padding-left:25px">       
                                            <div class="checkbox">
                                                <input type="checkbox" name="module[1]" value="1"><label>MRO</label>
                                            </div>      
                                    </div>
                                    
                                    <div class="form-group has-feedback has-feedback-left" style="padding-left:25px">   
                                            <div class="checkbox">
                                                <input type="checkbox" name="module[2]" value="1"><label>CNC</label>
                                            </div>      
                                    </div>
                                    
                                    <div class="form-group has-feedback has-feedback-left" style="padding-left:25px">   
                                            <div class="checkbox">
                                                <input type="checkbox" name="module[3]" value="1"><label>Aero-Science</label>
                                            </div>      
                                    </div>
                                    
                                    <div class="form-group has-feedback has-feedback-left" style="padding-left:25px">   
                                            <div class="checkbox">
                                                <input type="checkbox" name="module[4]" value="1"><label>Aero-Structures</label>
                                            </div>      
                                    </div>
                                    
                                    <div class="form-group has-feedback has-feedback-left" style="padding-left:25px">   
                                            <div class="checkbox">
                                                <input type="checkbox" name="module[5]" value="1"><label>Aero-Systems</label>
                                            </div>      
                                    </div>

更新:现在我正在使用插入功能。如果我只选择其中一个复选框,则选定的复选框会在数据库中更新。但是,如果我没有选择第二个复选框,我会得到一个错误代码,未定义索引:module_2。在数据库中的表中,未选中的模块显示为空而不是 0。如何使未选中的框在数据库中显示为 0。顺便说一句,我使用 phpMyadmin 作为数据库。

【问题讨论】:

    标签: php html sql checkbox phpmyadmin


    【解决方案1】:

    首先,您需要将代码包含在一个表单中。像这样,

    <form action='submit_form.php' method='POST'>
    <div class="form-group has-feedback has-feedback-left" style="padding-left:25px">   
         <div class="checkbox">
              <input type="checkbox" name="module_2" value="1" checked><label>CNC</label>
         </div>      
    </div>
    .....
    .....
    <input type="submit" value="Submit">
    </form>
    

    然后在你的 submit_form.php 文件中获取这样的值,

    $module_2= $_POST['module_2'];
    

    然后使用 mysql 插入查询,将您的值推送到 db 表。

    【讨论】:

    • 感谢您的回答。实际上我已经包含了
      部分。请问 $module_2= $_POST['module_2']; 是什么?做? ?
    • 另外我不太确定如何格式化插入查询以将其更新到数据库表?。对此感到抱歉
    【解决方案2】:

    好的,你必须发送 AJAX 请求。这样您就可以轻松更新数据库而无需刷新当前页面。你可以这样处理-

    $('#module_one').change(function(e) {
      e.preventDefault();
      let module_one_val = $(this).val();
      // now send ajax request to update databse
      $.get("url", {
              'module_one': module_one_val
          },
          function(data, textStatus, jqXHR) {
              console.log(data);
              alert('database updated');
          }
       );
     });
    

    注意:不要忘记在输入字段和jquery CDN中设置id名称。

    【讨论】:

      【解决方案3】:

      嗨,您可以使用 isset 分配 0 或 1

      if(isset($_POST[module[2]])){
      
      $checkbox = '1';
      }else{
      
      $checkbox = '0';
      
      }
      

      然后在您的 PDO 或准备好的语句中使用这些值,它会更新它

      【讨论】:

      • 那么在对所有 5 个模块执行此操作后,我应该使用 UPDATE 或 INSERT 函数将其放入数据库吗?
      • 您是每次都创建新记录还是更新现有记录?如果您要创建新记录,则插入更新或添加到记录更新
      • 另外你用什么来防止 SQL 注入,如果你不知道这里阅读stackoverflow.com/questions/42778166/…
      猜你喜欢
      • 2012-06-03
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 2014-11-14
      • 2017-06-06
      • 2014-11-04
      • 2013-09-27
      相关资源
      最近更新 更多