如何使用php将多个复选框值插入数据库

时间:2014-04-25 12:19:24

标签: php mysql sql checkbox

通过此代码,我可以将复选框值插入数据库。但我需要在phpmyadmin中添加一列,在该列中我需要存储值,如果我选择2复选框,我需要将ckeckbox值存储在另一列的一列中我需要将所选复选框存储为YES,未选中的值为NO 。但是看到我想要两个列

这是我的代码

<input type="checkbox" name="checkbox[]" value="Home" id="pageHome" onChange="toggleVisibility('home');" /><label for="pageHome"> Home</label><img id="home" src="images/icon-tick.png"  style="visibility:hidden"/><br/>

<input name="checkbox[]" value="About_us" id="page_Aboutus" type="checkbox" onChange="toggleVisibility('aboutus');"><label for="page_Aboutus"> About Us</label><img id="aboutus" src="images/icon-tick.png"  style="visibility:hidden" /><br/>

<input name="checkbox[]" value="Services" id="pageServices" type="checkbox" onChange="toggleVisibility('services');"><label for="pageServices"> Services</label><img id="services" src="images/icon-tick.png"  style="visibility:hidden" /><br/>

<input name="checkbox[]" value="Products" id="pageProducts" type="checkbox" onChange="toggleVisibility('products');"><label for="pageProducts"> Products</label><img id="products" src="images/icon-tick.png"  style="visibility:hidden"/><br/><br>

<input name="checkbox[]" value="Enquiry" id="pageEnquiry" type="checkbox" onChange="toggleVisibility('enquiry');"><label for="pageEnquiry"> Enquiry</label><img id="enquiry" src="images/icon-tick.png"  style="visibility:hidden"/><br/><br>

<input name="checkbox[]" value="Contact_us" id="pageContact" type="checkbox" onChange="toggleVisibility('Contact');"><label for="pageContact">Contact Us</label><img id="Contact" src="images/icon-tick.png"  style="visibility:hidden" /><br/>

php code

$required_pages = implode(',', $_REQUEST['checkBox']);

$sql="insert into request_quote(customer_name,organisation,phone_num,email,country,state,city,zipcode,project_type,website_url,website_purpose,website_keyword,Competitors,sample_websites,no_of_updation,required_pages,additional_page,other_details) 
        values('$customer_name','$organisation','$phone_num','$email','$country','$state','$city','$zipcode','$project_type','$website_url','$website_purpose','$website_keyword','$Competitors','$sample_websites','$no_of_updation','$required_pages','$additional_page','$other_details')";
mysql_query($sql) or die(mysql_error());

3 个答案:

答案 0 :(得分:1)

您可以为每个复选框添加value='YES'属性。 然后创建一个数组,假设没有选中复选框。因为当我们稍后迭代时,只会通过$_REQUEST发送选中的复选框。

$checkBoxes['customer_name']="NO";
$checkBoxes['organisation']="NO";
$checkBoxes['phone_num']="NO";
$checkBoxes['email']="NO";
$checkBoxes['country']="NO";
$checkBoxes['state']="NO";
$checkBoxes['city']="NO";
$checkBoxes['zipcode']="NO";
$checkBoxes['project_type']="NO";
$checkBoxes['website_url']="NO";
$checkBoxes['website_purpose']="NO";
$checkBoxes['website_keyword']="NO";
$checkBoxes['Competitors']="NO";
$checkBoxes['sample_websites']="NO";
$checkBoxes['no_of_updation']="NO";
$checkBoxes['required_pages']="NO";
$checkBoxes['additional_page']="NO";
$checkBoxes['other_details']="NO";
// Only the checked checkboxes wil be itterated below.
// This will mean the $value would be YES no matter what.
// So I write it literal for SQL-Injection-security
foreach ($_REQUEST['checkbox'] as $checkboxName=>$value){
  $checkBoxes[$checkBoxName]="YES"; 
}

在SQL-Query中,将变量替换为数组中的项。 即。

$sql="insert into request_quote(customer_name) 
    values('".$checkBoxes['customer_name']."')";

安全提示:

此外,直接插入用户输入可能会带来巨大的安全风险。对计划在SQL查询中使用的所有用户输入值使用mysql_real_escape_string($value)


您应该查看$ _POST。 W3Schools将帮助您:http://www.w3schools.com/php/php_forms.asp

答案 1 :(得分:0)

你必须使用3个表,并相互关联

  1. table 1 -> customers (id, name, etc)
  2. table 2 -> required_pages (id, name) - 在这里,您将从复选框(Home,About_us等)添加选项
  3. table 3 -> customers_required_pages (id, customer_id, required_page_id)
  4. 保存数据时,您必须按顺序保存:

    1. 您的客户:

      $sql = "INSERT INTO customers (field1, field2, fieldn...)"
      $qry = mysql_query($sql);
      
    2. 检索您的客户ID:

      $sql = "SELECT LAST_INSERT_ID() AS customerId";
      $qry = mysql_query($sql);
      $customerId = mysql_fetch_assoc($qry);
      
    3. 保存客户与required_pa​​ges之间的关系

      <?php
      foreach ($_REQUEST['checkBox'] as $oneCheckbox => $checkboxValue) {
          $sql = "INSERT INTO customers_required_pages (customer_id, required_page_id) VALUES ({$customerId['customerId']}, '{$checkboxValue}')"; 
      }
      ?>
      
    4. 检索数据时,您将使用左边连接和table3从table2中选择值,这样您就可以知道从复选框列表中选择的值是否为

      $sql = "SELECT rp.id, rp.name, IF(crp.customer_id IS NULL, 'NO', 'YES') AS checked FROM required_pages rp LEFT JOIN customers_required_pages crp ON rp.id = crp.required_page_id";
      
    5. 作为额外的,考虑使用MySQLi或PDO而不是mysql作为您的数据库库,因为不鼓励使用mysql lib

答案 2 :(得分:-3)

我遇到了将多个复选框存储到mysql表中的问题,但现在它可以正常使用此代码:

<html>
<head>
<title>Registration Page</title>
</head>
<body>
    <?php
    require("config.php");
    ?>
    <?php
    if(isset($_POST['submit'])){
        $fname  =   $_POST['fname'];
        $lname  =   $_POST['lname'];
        $gender =   $_POST['gender'];
        $hobbies    =   implode(",",$_POST['hobbies']);
        echo $hobbies;
        $country    =   $_POST['country'];
    //  echo $hobbies;
        //foreach($hobbies as $hobbies1){
            //echo $hobbies1;
            //$implode  =   implode(',',$hobbies1);
            $sql    =   "INSERT INTO  `userinfo`(`fname`,`lname`,`gender`,`hobbies`,`country`) 
                    values('$fname','$lname','$gender','$hobbies','$country')";

        //}



        //$sql  =   "INSERT INTO  `userinfo`(`fname`,`lname`,`gender`,`hobbies`,`country`) 
        //          values('$fname','$lname','$gender','$hobbies1','$country')";

        $query  =   mysql_query($sql) or die(mysql_error());
        if
        ($query){
            echo "<h1>Data inserted .. Happy coding</h1>";
        }else{
            echo "<h1>Please check the problem</h1>";
        }
    }
    //}
    ?>
<form name="registration" method="post" action="">
    <table border="1" cellpadding="2" cellspacing="2" align="center">
    <tr>
    <td>First Name:</td><td><input type="text" name="fname" required=""></td>
    </tr>
    <tr>
    <td>Last Name:</td><td><input type="text" name="lname" required=""></td>
    </tr>
    <tr>
    <td>Gender:</td><td><input type="radio" name="gender" value="male" required="">Male &nbsp; <input type="radio" name="gender" value="female" >Female</td>
    </tr>
    <tr>
    <td>Hobbies:</td><td><input type="checkbox" name="hobbies[]" value="tennis">Tennis &nbsp;<br>
     <input type="checkbox" name="hobbies[]" value="cricket">Cricket &nbsp; <br>
     <input type="checkbox" name="hobbies[]" value="dance">Dance7 &nbsp; <br>
     <input type="checkbox" name="hobbies[]" value="sketching">Sketching &nbsp;
    </td>
    </tr>
    <tr>
        <td>Country:</td>
    <td>
    <select name="country">
    <option >----select----</option>
    <option>India</option>
    <option>Pakistan</option>
    <option>UAE</option>
    </select>
    </td>
    </tr>
    <tr>
    <td><input type="submit" name="submit" value="Register me"></td>
    </tr>
    </table>
</form>
</body>
</html>