简而言之,用户的复选框值存储在MySQL数据库中。我可以遍历数据库以显示每个复选框的VALUES(Skills_ID + Skills_Name),以便用户可以添加他们的技能;但是,我无法使用标记为“已检查”的默认值填充这些复选框,以获取数据库中已有的技能。
一个可以帮助我今晚睡觉的人的一个充满业力的盒子。 :)
这是我的代码:
function isChecked() {
$query = "select * FROM individual_skills WHERE Ind_ID = ".$_SESSION['Ind_ID']. "";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
// If value exists, set $valueExitsInDB to true
if (isset($row['Skills_ID'])) {
$valueExitsInDB="TRUE";
} else {
$valueExitsInDB="FALSE";
}
// if the value does exist, then we are writing 'checked' in the checkbox
if ($valueExitsInDB) {
return "checked";
} else {
return "";
}
} // END WHILE LOOP
} // END FUNCTION
而且,我在复选框循环中的代码看起来像这样(不需要为阅读循环负担,因为我可以安全地将复选框值拉到输出 - 只是不是默认值):
echo "<input type='checkbox' name='skills[]' value='$skill_ID' checked='isChecked()'>". $skillName ."";
所以,你可以看到,我正在调用函数:isChecked()。
任何和所有帮助,非常感谢。
答案 0 :(得分:3)
您的代码存在一些问题,假设我了解您要执行的操作:
你实际上并没有像你所认为的那样调用函数isChecked()
;它只是将字符串"isChecked()"
添加到输出中。如果您检查了生成的HTML,您会注意到这一点。该行应为:
echo "<input type='checkbox' name='skills[]' value='$skill_ID'" .
(isChecked($skill_ID) ? " checked='checked'" : "") . "'> $skillname";
如上所述,您应该将技能ID传递给isChecked()
功能。然后,您应该在查询中检查此行,而不是*在返回的查询中是否设置了Skills_ID
。否则,您正在检查是否为该个人定义了任何技能!所以你的功能现在应该是:
function isChecked($skill_ID)
{
$query = "SELECT 1 FROM individual_skills WHERE Ind_ID = " .
$_SESSION['Ind_ID'] . " AND Skills_ID = $skill_ID";
$result = mysql_query($query) or die(mysql_error());
return mysql_num_rows($result) = 1;
}
几个旁注:
我从函数返回false或true值。这符合命名“is ...”,它将返回yes或no。然后调用者(echo
语句)可以决定如何处理返回的值。
您可能不必像现在这样打1000次数据库。如果您更改初始查询以包含isChecked
列,则首先不需要该功能和其他查询。
答案 1 :(得分:2)
应该是下面的内容。
方法1
echo "<input type='checkbox' name='skills[]' value='$skill_ID' checked='".isChecked()."'>". $skillName ."";
方法2
你可以尝试
echo "<input type='checkbox' name='skills[]' value='$skill_ID ".isChecked().">". $skillName ."";
方法1
checked="checked"
应该是一个不同的属性,而不是将其放入值
方法2
同样添加checked
也可以帮到你。
不是为每个复选框进行数据库调用,而是尝试创建一个包含所有数据的数组。尝试多维数组。
答案 2 :(得分:1)
echo "<input type='checkbox' name='skills[]' value='$skill_ID'" . isChecked() . ">" . $skillName . "";
尝试使用此
答案 3 :(得分:1)
我认为,您的error(all checked checkboxes)
是因为 isset ,而是{而不是isset($row['Skills_ID'])
使用!empty($row['Skills_ID'])
或{{1}因为如果该字段为空,那么它也会给你真实的,
见link