【问题标题】:can not insert checkbox value into mysql database using comma [duplicate]无法使用逗号将复选框值插入mysql数据库[重复]
【发布时间】:2016-05-30 06:26:10
【问题描述】:

我已经搜索了很多以将复选框值插入 mysql 数据库的方法,其中值用逗号分隔。但到目前为止我的任何尝试都没有奏效,您可以在下面看到我的代码:

HTML 代码:

 <form role="form"  action="zone_detail1.php" method="post" enctype="multipart/form-data">
                <div class="form-group">
                    <label for="sc">Zone Name for Identification</label>
                    <input required type="text" class="form-control"  name="txtzonename" placeholder="Enter Name">
                </div>
                <div class="form-group">
                    <label for="sc">Day(s) for Zone</label><br>
                    <input type="checkbox" name="txtday" value="Monday" />Monday
                    <input type="checkbox"  name="txtday" value="Tuesday"  />Tuesday
                    <input type="checkbox"  name="txtday" value="Wednesday"  />Wednesday
                    <input type="checkbox"  name="txtday" value="Thrusday"  />Thrusday
                    <input type="checkbox"  name="txtday" value="Friday"  />Friday
                    <input type="checkbox"  name="txtday" value="Saturday"  />Saturday
                    <input type="checkbox"  name="txtday" value="Sunday"  />Sunday
                    </div> 
               <input type="submit" class="btn btn-default" name="btn_submit" value="Submit"/>
            </form> 
  <?php
 include("db.php");
 session_start();
 if(isset($_POST['btn_submit']))
    {   
    //retrieve our data from POST
    $zone_name = $_POST['txtzonename'];
    $zone_days = @mysql_real_escape_string(implode(',',$_POST['txtday'])); 
    $sql="Insert into `zone` (zone_name , zone_turn) values('$zone_name',     '$zone_days')";
    $result=mysql_query($sql);
    if($result){
    $msg="Data Inserted Successfully..!!";
     $_SESSION['msg'] = $msg;   
    header("location:zone_detail.php");
     }
    else {
    echo "ERROR";
    }     
    }
?> 

【问题讨论】:

  • 这样试试 $zone_days = join(',',$_POST['txtday']);
  • @Plum 为什么要使用join 而不是implodeimplodeexplode 是这些函数的普通 PHP 名称。
  • 我们可以看到你的复选框的html吗?
  • “zone_turn”是个什么样的字段?
  • 你应该使用 name="txtday[]" 作为名称@NidhiShah

标签: php html mysql


【解决方案1】:

你应该指定

<input type="checkbox" name="txtday[]" value="Monday">Monday<br>

作为数组。

[] 添加到所有名称 txtday 并在 php 中使用此名称,例如 array

之后,你可以INSERTdb 不同列的值,或者使用implode 并将值保存到一列中。

不要忘记将mysql 替换为mysqli 另外请记住,mysql_* 函数是officially deprecated,因此不应在新代码中使用。您可以改用 PDO 或 MySQLi。请参阅this answer on SO 了解更多信息。

HTML 代码

<form role="form"  action="zone_detail1.php" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="sc">Zone Name for Identification</label>
        <input required type="text" class="form-control"  name="txtzonename" placeholder="Enter Name">
    </div>
    <div class="form-group">
        <label for="sc">Day(s) for Zone</label><br>
        <input type="checkbox" name="txtday[]" value="Monday" />Monday
        <input type="checkbox"  name="txtday[]" value="Tuesday"  />Tuesday
        <input type="checkbox"  name="txtday[]" value="Wednesday"  />Wednesday
        <input type="checkbox"  name="txtday[]" value="Thrusday"  />Thrusday
        <input type="checkbox"  name="txtday[]" value="Friday"  />Friday
        <input type="checkbox"  name="txtday[]" value="Saturday"  />Saturday
        <input type="checkbox"  name="txtday[]" value="Sunday"  />Sunday
    </div> 
        <input type="submit" class="btn btn-default" name="btn_submit" value="Submit"/>
</form> 

PHP 代码

<?php
 include("db.php");
 session_start();

 if(isset($_POST['btn_submit']))
    {   
    //retrieve our data from POST
    $zone_name = $_POST['txtzonename'];
    $zone_days = implode(',', $_POST['txtday']);
    $sql="Insert into `zone` (zone_name , zone_turn) values('".$zone_name."',     '".$zone_days."')";
    $result=mysql_query($sql);
    if($result){
    $msg="Data Inserted Successfully..!!";
     $_SESSION['msg'] = $msg;   
    header("location:zone_detail.php");
     }
    else {
    echo "ERROR";
    }     
    }
?> 

【讨论】:

    【解决方案2】:

    您的标记中缺少 name="txtday[]"

    您应该在输入元素中指定:

    <input type="checkbox" name="txtday[]" value="Monday" />
    

    像这样更新您的标记:

     <form role="form"  action="zone_detail1.php" method="post" enctype="multipart/form-data">
                <div class="form-group">
                    <label for="sc">Zone Name for Identification</label>
                    <input required type="text" class="form-control"  name="txtzonename" placeholder="Enter Name">
                </div>
                <div class="form-group">
                    <label for="sc">Day(s) for Zone</label><br>
                    <input type="checkbox" name="txtday[]" value="Monday" />Monday
                    <input type="checkbox"  name="txtday[]" value="Tuesday"  />Tuesday
                    <input type="checkbox"  name="txtday[]" value="Wednesday"  />Wednesday
                    <input type="checkbox"  name="txtday[]" value="Thrusday"  />Thrusday
                    <input type="checkbox"  name="txtday[]" value="Friday"  />Friday
                    <input type="checkbox"  name="txtday[]" value="Saturday"  />Saturday
                    <input type="checkbox"  name="txtday[] value="Sunday"  />Sunday
                    </div> 
               <input type="submit" class="btn btn-default" name="btn_submit" value="Submit"/>
            </form> 
    

    您可以查看此tutorial 以供参考。

    【讨论】:

      猜你喜欢
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      相关资源
      最近更新 更多