PHP 插入 MySql

标签 php mysql

我正在尝试将数据从表单插入到 MySQL 数据库,我有一个 html 表,如下例所示。

表格示例

复选框|下拉菜单

复选框|下拉菜单

复选框|下拉菜单

复选框|下拉菜单

所有表和控件均从数据库填充。我只想插入选中复选框的下拉列表中的值。到目前为止,它仅在第一个下拉菜单不为空时才有效,而且所有复选框都可以正常工作。

插入的php代码:

      <?php
            //$c = checkbox array which is generated from mysql db data
                $c = $_POST['check'];
//$n = dropdown array which is generated from mysql db data
                $n = $_POST['nivel'];
        //count the amount of checkboxes checked to use in for loop
                $camount = count($c);
        //count the amount of dropdowns which have a value selected should be equal to $camount but it is not
                $namount = count($n);
                    ?>



               <?php



                            for($i = 0; $i <$camount; $i++)
                            {

                                          //insert row into table for each checked checkbox
                                            $d = new Disciplina_Estudiante();
                                            $d->idestudiante = $estudiante->id;
                                            $d->iddisciplina =$c[$i];

    //this is supposed to get the values from the dropdowns that are not empty
                                            $d->idnivel = $n[$i];


                                            $d->save();               
                            }


            html markup:
            <div class="col-md-4">

                                   <table class="table table-bordered table-condensed table-hover" >
                                     <thead style="background-color: #f707f3;">
                                       <tr>
                                       <th>Disclipina</th>
                                       <th>Costo</th>
                                       <th>Grupo</th>


                                       </tr>
                                   </thead>
                                   <tbody>
                                   <?php foreach ($disciplinas as $disciplina) : ?>

                                    <tr>


                                           <td> <input type="checkbox" id="check" value="<?php echo $disciplina->id;?>" name="check[]"><?php echo $disciplina->nombre;?></input></td>
                                            <td> <?php echo $disciplina->costo;?></td>
                                            <td><select  class="form-control" id="nivel" name="nivel[]" > 
                                            <option selected value="" readonly>Seleccionar un Nivel</option>                             
                                            <?php foreach ($niveles as $nivel) : ?>


                                            <option value="<?php echo $nivel->id; ?>"> <?php echo $nivel->nombre_nivel."<br>";?></option>




                                            <?php endforeach; ?>
                                                </select>
                                                </td>


                                    </tr>  
                                     <?php endforeach ;?>

                                     </tbody>

                                   </table>
                                   <br>
                                            <input type="submit" class="btn btn-primary pull-right" name="submit" value="Aceptar"></input>


                                   </div> 

第一次发帖时如有任何帮助,我们将不胜感激...如果这没有意义,请LMK

最佳答案

您的问题是,虽然只有选中的复选框才会在 $_POST 中传递。数组,select全部无论用户是否选择了值,框都会被传递。

在这种情况下,您可以做的就是在name中索引您的复选框。属性以便索引 i $check[]的数组将匹配索引 i $nivel[]的大批。就像这样:

<input type="checkbox" id="check" value="<?php echo $disciplina->id; ?>" name="check[0]" /> (顺便说一下input 是自闭合元素。)

这将对应于选择:<select class="form-control" id="nivel" name="nivel[0]" >

然后将循环更改为 foreach,如下所示:

foreach ($c as $i => $checkbox) {
    $d = new Disciplina_Estudiante();
    $d->idestudiante = $estudiante->id;
    $d->iddisciplina = $checkbox; 

    $d->idnivel = $n[$i];
    $d->save();
}

最后一点,缩进您的代码。

关于PHP 插入 MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42127877/

相关文章:

php - 如何使用 jQuery 检查用户输入中所有图像标签的来源

php - 即使不再引用文件,Assetic 文件不存在错误?

php - 为什么我只能从MySQL中拉取 "id"属性而不能拉取 "name"

php - 缺少必需表单字段的 Symfony 验证错误消息

php - 如何使用 prestashop 1.7 上的模块在前台创建自定义页面

php - 从 PHP 调用 MySql 函数

php - Kohana添加函数返回省份名称

mysql - 使用 gorm 映射现有的 mysql 数据库

php - 看似随机的挂断/延迟加载网站

mysql 使用 signal/resignal 进行错误处理