【问题标题】:Submitting a multiple checkbox form to MySql with php使用 php 向 MySql 提交多个复选框表单
【发布时间】:2016-07-01 17:38:09
【问题描述】:

我有一个包含多个字段的表单:Textinputs、Checkboxes、Radios.. 我想将它提交到 MySQL 数据库。当我评论复选框 HTML 和相应的 php 代码时,一切正常,所有内容都提交并保存在数据库中。如果我尝试提交复选框表单并取消注释它,则不会提交任何内容,并且单击提交按钮不会产生任何效果。

如何将复选框字段的值作为字符串提交到 MySQL 数据库,并用分号分隔值?例如。如果复选框字段为:Ab、Cd、De、Fg - 并且选中“Ab”和“De”,则提交以下字符串:“Ab;Cd”

这是我的 HTML 表单的一部分:

<div class="row">
    <div class="col-sm-4">
        <fieldset class="form-group">
            <label for="plattform">Platform</label>
         <form id="formId">


                <input type="checkbox" name="check_list[]" value="Android">Android
                <input type="checkbox" name="check_list[]" value="iPhone">iPhone
                <input type="checkbox" name="check_list[]" value="iPad">iPad
                <input type="checkbox" name="check_list[]" value="Windows Phone">Windows Phone

            </form> 

            <!-- <input type="checkbox" name="check_list[]" value="Android">
            <input type="checkbox" name="check_list[]" value="iPhone">
            <input type="checkbox" name="check_list[]" value="iPad">
            <input type="checkbox" name="check_list[]" value="Windows Phone"> --> 

        </fieldset>
    </div>
    <div class="col-sm-4">
        <fieldset class="form-group">
            <label for="featured">Featured</label>
                <div>
                        <input type="radio" name="featured" required>True</input>
                    </div>
                    <div>
                    <input type="radio" name="featured" required checked>False</input> 
                </div>
        </fieldset>
    </div>

这是我的 php 文件的示例:

<?php /* Attempt MySQL server connection. Assuming you are running
MySQL server with default setting (user 'root' with no password) */

/* Database connection start */ 
$servername = "localhost"; 
$username = "serverName_Here"; 
$password = "password_Here"; 
$dbname = "dbName_Here";

$conn = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error());

// Check connection 
if($conn === false){
    die("ERROR: Could not connect. " . mysqli_connect_error()); 
}   
// Escape user inputs for security 
$stName = mysqli_real_escape_string($conn, $_POST['sName']); 
$lgName = mysqli_real_escape_string($conn, $_POST['lName']);
$desc = mysqli_real_escape_string($conn, $_POST['desc']);

$Platform = ''; 
if(!empty($_POST['check_list'])) {  
    $counter = 0;
    foreach($_POST['check_list'] as $check) {
        if ($counter < 1) {             
            $Platform = $check;         
        } else {                
            $Platform = $excludePlatform + ';' + $check;        
        }       
        counter++;
    } 
} 
$Platform = mysqli_real_escape_string($conn, $_POST['check_list']);


$sql = "INSERT INTO tableName_Here (stName, lgName, details_description, Platform) VALUES ('$stName', '$lgName', '$desc', '$Platform')"; 

if(mysqli_query($conn, $sql)){
    echo "Records added successfully."; 
} else {
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn); 
}   // close connection 
mysqli_close($conn); ?>

【问题讨论】:

  • PHP 文件代码不可见。

标签: php html mysql forms checkbox


【解决方案1】:

您需要在表单标签中包含复选框。

最简单的方法是将表单打开和关闭选项卡放在其余字段代码的上方和下方。提交按钮也应该在表单中。

在后端复选框值将作为数组传入。如果你想用逗号分隔它们,你可以这样做。

$values = implode(', ', $_POST['check_list']);

【讨论】:

  • 但我有一个大表单,其中包含所有字段。文本输入、收音机和复选框。我是否应该在那个大页面表单中添加另一个表单,仅用于复选框?
  • 我可以看到一个&lt;form id="formId"&gt;,它的外面有字段——所有字段都应该在里面。如果你有一个额外的表单标签,它没有包含在上面的代码中,你可以删除嵌套的表单标签。所以你只需要一个包含所有字段的表单标签。
  • 哦不.. 有一个更大的表单,其中包含页面的整个字段。您看到的表单仅用于复选框..如果我应该删除吗?
  • 是的,您不需要为较大表单中的复选框提供表单。
【解决方案2】:

首先,为什么你没有在form标签中使用POST作为方法,你也没有使用提交按钮。这样你就可以在php中访问复选框的值

$value=$_POST['check_list[]'];

【讨论】:

    【解决方案3】:

    试试这个完整的例子,

    表结构

    CREATE TABLE IF NOT EXISTS `games` (
      `id` int(12) NOT NULL AUTO_INCREMENT,
      `game_name` varchar(255) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
    
    
    <?php
    include_once("yourconfig.php"); //include your db config file
    extract($_POST);
    $check_exist_qry="select * from games";
    $run_qry=mysql_query($check_exist_qry);
    $total_found=mysql_num_rows($run_qry);
    if($total_found >0)
    {
        $my_value=mysql_fetch_assoc($run_qry);
        $my_stored_game=explode(',',$my_value['game_name']);
    }
    
    if(isset($submit))
    {
        $all_game_value = implode(",",$_POST['games']);
        if($total_found >0)
        {
            //update
            $upd_qry="UPDATE games SET game_name='".$all_game_value."'";
            mysql_query($upd_qry);
    
        }
        else
        {
            //insert
            $ins_qry="INSERT INTO games(game_name) VALUES('".$all_game_value."')";
            mysql_query($ins_qry);
        }
    }
    
    ?>
    <form method="post" action="">
    Games You Like: <br/>
        <input type="checkbox" name="games[]" value="1" <?php if(in_array(1,$my_stored_game)){echo "checked";}?>><label>Football</label><br>
        <input type="checkbox" name="games[]" value="2" <?php if(in_array(2,$my_stored_game)){echo "checked";}?>><label>Basket Ball</label><br>
        <input type="checkbox" name="games[]" value="3" <?php if(in_array(3,$my_stored_game)){echo "checked";}?>><label>Pool</label><br>
        <input type="checkbox" name="games[]" value="4" <?php if(in_array(4,$my_stored_game)){echo "checked";}?>><label>Rugby</label><br>
        <input type="checkbox" name="games[]" value="5" <?php if(in_array(5,$my_stored_game)){echo "checked";}?>><label>Tennis</label><br>
        <input type="checkbox" name="games[]" value="6" <?php if(in_array(6,$my_stored_game)){echo "checked";}?>><label>Cricket</label><br>
        <input type="checkbox" name="games[]" value="7" <?php if(in_array(7,$my_stored_game)){echo "checked";}?>><label>Table Tennis</label><br>
        <input type="checkbox" name="games[]" value="8" <?php if(in_array(8,$my_stored_game)){echo "checked";}?>><label>Hockey</label><br>
        <input type="submit" name="submit" value="submit">
    </form>
    

    这只是我在此示例中添加的基本示例和查询,您可以从这个基本示例中学习,我认为这对您非常有用...如果有用,而不是为此解决方案提供正确答案

    【讨论】:

      猜你喜欢
      • 2013-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 2017-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多