生成多个复选框并对其进行评估
Generate multiple checkboxes and evaluate them
我有一个 table 显示每个未批准的休假,它看起来像这样:
对于每个未批准的项目,都会有一个新行,因此会出现另一个复选框,但复选框的名称将相同或略有不同(name="approve1"
)。我个人认为这不是一个好习惯...
而且评价也不是很好,因为要入库
<form role="form" method="post" action="" id="form">
<h2><?php echo $title ?></h2>
<?php
$page = date('F');
$page = lcfirst($page);
echo "<p><a href='$page.php'>Back</a></p>";
?>
<hr>
<?php
if($i == 0){
echo "<h3>No unapproved leaves.</h3>";
}else{
echo '<table class="table table-striped table-hover">';
echo '<thead>';
echo '<th>';
echo 'Start';
echo '</th>';
echo '<th>';
echo 'End';
echo '</th>';
echo '<th>';
echo 'Employee';
echo '</th>';
echo '<th>';
echo 'Approve';
echo '</th>';
echo '</thead>';
echo '<tbody>';
for($j =0; $j < $i; $j++){
echo '<tr>';
echo '<td>';
echo $unapproved[$j]['start'];
echo '</td>';
echo '<td>';
echo $unapproved[$j]['end'];
echo '</td>';
echo '<td>';
$id = $unapproved[$j]['employee_FK'];
$result = mysql_query("select name, surname from employee where employee_ID = $id");
while ($row = mysql_fetch_assoc($result)) {
$employee[] = $row;
}
echo $employee[0]['name'], " ", $employee[0]['surname'];
echo '</td>';
echo '<td>';
echo '<input type="checkbox" name="approve" value="1" id="approve">';
echo '</td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
}
?>
<input type="submit" name="submit" value="Submit" class="btn" >
</div>
</div>
</form>
谁能想到更好、更简单的解决方案?
像这样使用复选框名称
<input type="checkbox" name="approve[]" value="<?php $your_row_id; ?>" id="approve">
这里$your_row_id
表示数据库中一行的唯一id。
并且在 post 中,您将获得一个名为 approve
的数组,其中包含所有选定的值。
使用 foreach 解析该数组。
您可以通过 HTTP 传输 arrays :
echo '<input type="checkbox" name="approve[]" value="', $id, ']" id="approve">';
现在 $_GET['approve']
将是一个仅包含选中框值的数组。
您还可以指定与值关联的键:
echo '<input type="checkbox" name="approve[', $id, ']" value="', $id, ']" id="approve">';
您可以在“name
”属性中使用数组表示法生成复选框。
<input type="checkbox" name="approve[]" value="1" id="approve">
发送后,您可以使用数组符号恢复值 $_GET['approve'][0]
,...
大多数框架中表格数据的做法是将它们命名为 Model[id][field]
,因此在您的示例中它看起来像 "<input type='checkbox' name='leave[$j][approved]' value='1' id='leave_$j_approved'>"
。
然后您可以像这样迭代 post 数据来轻松访问您的数据:
foreach($_POST['leave'] as $id => $values) {
}
我有一个 table 显示每个未批准的休假,它看起来像这样:
对于每个未批准的项目,都会有一个新行,因此会出现另一个复选框,但复选框的名称将相同或略有不同(name="approve1"
)。我个人认为这不是一个好习惯...
而且评价也不是很好,因为要入库
<form role="form" method="post" action="" id="form">
<h2><?php echo $title ?></h2>
<?php
$page = date('F');
$page = lcfirst($page);
echo "<p><a href='$page.php'>Back</a></p>";
?>
<hr>
<?php
if($i == 0){
echo "<h3>No unapproved leaves.</h3>";
}else{
echo '<table class="table table-striped table-hover">';
echo '<thead>';
echo '<th>';
echo 'Start';
echo '</th>';
echo '<th>';
echo 'End';
echo '</th>';
echo '<th>';
echo 'Employee';
echo '</th>';
echo '<th>';
echo 'Approve';
echo '</th>';
echo '</thead>';
echo '<tbody>';
for($j =0; $j < $i; $j++){
echo '<tr>';
echo '<td>';
echo $unapproved[$j]['start'];
echo '</td>';
echo '<td>';
echo $unapproved[$j]['end'];
echo '</td>';
echo '<td>';
$id = $unapproved[$j]['employee_FK'];
$result = mysql_query("select name, surname from employee where employee_ID = $id");
while ($row = mysql_fetch_assoc($result)) {
$employee[] = $row;
}
echo $employee[0]['name'], " ", $employee[0]['surname'];
echo '</td>';
echo '<td>';
echo '<input type="checkbox" name="approve" value="1" id="approve">';
echo '</td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
}
?>
<input type="submit" name="submit" value="Submit" class="btn" >
</div>
</div>
</form>
谁能想到更好、更简单的解决方案?
像这样使用复选框名称
<input type="checkbox" name="approve[]" value="<?php $your_row_id; ?>" id="approve">
这里$your_row_id
表示数据库中一行的唯一id。
并且在 post 中,您将获得一个名为 approve
的数组,其中包含所有选定的值。
使用 foreach 解析该数组。
您可以通过 HTTP 传输 arrays :
echo '<input type="checkbox" name="approve[]" value="', $id, ']" id="approve">';
现在 $_GET['approve']
将是一个仅包含选中框值的数组。
您还可以指定与值关联的键:
echo '<input type="checkbox" name="approve[', $id, ']" value="', $id, ']" id="approve">';
您可以在“name
”属性中使用数组表示法生成复选框。
<input type="checkbox" name="approve[]" value="1" id="approve">
发送后,您可以使用数组符号恢复值 $_GET['approve'][0]
,...
大多数框架中表格数据的做法是将它们命名为 Model[id][field]
,因此在您的示例中它看起来像 "<input type='checkbox' name='leave[$j][approved]' value='1' id='leave_$j_approved'>"
。
然后您可以像这样迭代 post 数据来轻松访问您的数据:
foreach($_POST['leave'] as $id => $values) {
}