繁体   English   中英

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

[英]how insert the multiple checkbox values into database using php

通过此代码,我可以将复选框值插入数据库。 但是我需要在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代码

$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());

您可以将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查询中,将变量替换为数组中的项。 IE浏览器

$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

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

  1. table 1 -> customers (id, name, etc)
  2. table 2 -> required_pages (id, name) -在此处,您将从复选框中添加您的选项(主页,About_us等)
  3. table 3 -> customers_required_pages (id, customer_id, required_page_id)

保存数据时,必须顺序保存:

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

另外,请考虑使用MySQLi或PDO代替mysql作为数据库库,因为不建议使用mysql lib

我在将多个复选框存储到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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM