我有一个数组,里面有 8 个不同的应用程序名称。我循环浏览它并选中一个复选框,如果用户在上次登录时选择了该选项。
foreach($appsArray as $app){
$query = " SELECT UK, SPAIN, FRANCE, BENELUX, GERMANY, SWEEDEN
FROM ".$app."
WHERE userid = ".$_SESSION['user']['id'];
$stmt = $db->prepare($query);
$result = $stmt->execute();
$result = $stmt->fetchAll();
echo("<td>".$app."</td> <td><center>
<input type = 'checkbox' name='"".$app."[]'"".
"value ='"".$app."UK'" checked='"".$result[0]['UK']."'"/> ");
$result="";
}
但是,这在一定程度上是有效的 - 我为第一个应用程序选择的选项会反映在所有应用程序中。这一定与 php 中的 foreach 循环方式有关,但我不确定如何。
任何建议将不胜感激。
编辑:为了澄清,我为一个应用程序选择的选项反映在所有应用程序复选框中。我希望他们独立。
我相信
问题可能更多地在于您如何使用复选框的值。我遇到了一些问题,如果您不使用 checked="checked"
,"checked"属性不喜欢工作。尝试这样的事情。
$checked = $result[0]['UK'] ? ' checked="checked"' : '';
echo '<td>'.$app.'</td><td><center><input type="checkbox" name="'.$app.'[]"'.
' value="'.$app.'UK"'.$checked.' /> ';
如果这仍然不起作用,请确保对$result
执行var_dump
或类似操作,以确保查询正常工作。
一旦你有了这个工作,我可能会看到将这些查询合并为一个。我可以帮助让 8 个子查询命中数据库,而不是 8 个单独的数据库调用。