3

I have searched a lot for a way to insert checkbox values into a mysql database with the values separated by comma. But none of my attempts have so far worked, below you can see my code:

The HTML code:

 <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";
    }     
    }
?> 
Nidhi Shah
  • 65
  • 1
  • 7

2 Answers2

0

You should specify

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

as array.

Add [] to all names txtday and work at php with this like an array.

After it, you can INSERT values at different columns at db, or use implode and save values into one column.

Don't forget to replace mysql with mysqli. Also keep in mind that mysql_* functions are officially deprecated and hence should not be used in new code. You can use PDO or MySQLi instead. See this answer on SO for more information.

HTML Code

<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 Code

<?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";
    }     
    }
?> 
Community
  • 1
  • 1
Rahul
  • 763
  • 1
  • 12
  • 45
0

You are missing the name="txtday[]" in your mark up.

In your input element you should specify:

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

Update your mark up like this:

 <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> 

You can see this tutorial for your reference.

John Roca
  • 1,204
  • 1
  • 14
  • 27