我正在尝试将数据从表单插入到 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/