我希望有一个表单,允许用户通过检查复选框来选择从表中显示哪些数据。如果用户希望只显示2列,应该只显示2列。我有我的代码,但我提交后,它什么也没显示。下面是我的代码:
<form name="form1" method="post" action="view_emp.php">
<p>Select Option
<input type="checkbox" name="number[]" value="name" />Name
<input type="checkbox" name="number[]" value="hired" />Date Hired
<input type="checkbox" name="number[]" value="basic" />Basic Pay
<input type="checkbox" name="number[]" value="incentives">Incentives
</p>
<input type="submit" name="Submit" value="Submit">
</form>
这是我的php:
<?php
$db = mysql_connect('localhost', 'root', '');
mysql_select_db('eis', $db) or die (mysql_error());
$employee = array();
foreach ($_POST['number'] as $employee) {
$number = mysql_real_escape_string($number);
$employee[] = "'{$number}'";
}
$sql = "select * from employees where type in (" .implode(", ", $number). ")";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
print $row['name'];
}
?>
我是PHP的初学者,我需要大师和专家的帮助。谢谢你!
PHP的implode()和explosion()函数可能会派上用场。您可以使用内爆($_POST['number'])轻松地将POST或GET属性'number'转换为逗号分隔的列表。这将很容易存储在一个MySQL字段中,也许是用户表中的一列。
如果你想让用户以后编辑表单,用循环呈现复选框,并为每个复选框元素添加一个"checked"属性,其名称存在于从数据库检索的' expanded ' list (array)中。
这基本上是序列化/反序列化。还有其他方法可以做到这一点,包括serialize(), unserialize()或json_encode(), json_decode()。但是,由于您的数据似乎很容易建模为基本列表,因此您可以使其更简单。