Я работаю над динамическими флажками, и значения флажков извлекаются из базы данных mysql, а значения флажков также сохраняются в таблице db после того, как форма отправлена здесь, все работает нормально
Проблема в том, что когда я нажимаю флажок, все значения флажка помечаются и проверяются, но я хочу, чтобы, когда я нажимаю одно значение флажка, функция должна помечать или проверять это значение, которое проверено, и не должно помечать все значения флажка?
запрос к базе данных mysql
function select_user_permissions(){
global $data;
$result=db_rows(
"SELECT * FROM `{$data['DbPrefix']}permissions` order by pid");
return $result;
}
function select_user_id_permissions(){
global $data;
$adminid=$_REQUEST['userid'];
$result=("SELECT * FROM `{$data['DbPrefix']}user_permission`
where permuserid='$adminid' ");
return $result;
}
$post['select_user']=select_user_permissions();
$post['select_user_perm']=select_user_id_permissions();
<form name="my_form" method=post>
<?
foreach($post['select_user'] as $key => $values){
?>
<input type=checkbox name=userperm[] value=<?=$values['pid']?>
<?php if($post['userperm']) { echo " checked=checked'"; } ?>>
<label for="<?=$values['permname']?>"><?=$values['permname']?></label>
<? } ?>
<input class=submit type=submit name=send value="SAVE CHANGES">
</form>
здесь у меня есть решение
<script src='http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js'>
<SCRIPT LANGUAGE="JavaScript">
function Check(chk)
{
if(document.myform.Check_ctr.checked==true){
for (i = 0; i < chk.length; i++)
chk[i].checked = true ;
}else{
for (i = 0; i < chk.length; i++)
chk[i].checked = false ;
}
}
// End -->
</script>
<?php
echo "the following values have been checked: ";
$checked="";
$a = array();
if(isset($_POST["userperm"])) {
foreach($_POST["userperm"] as $j=>$i) {
$checked .= ($checked==""?"":",") . "checkbox" . $i;
array_push($a, $i);
}
}
echo $checked;
function was_checked($i,$a) {
if(in_array($i, $a)===true) {
return "checked='checked'";
return "";
}
}
?>
<?
foreach($post['select_user'] as $key => $values){
?>
<input type=checkbox name=userperm[] value=<?=$values['pid']?>
<?=was_checked($values['pid'],$a)?>>
<label for="<?=$values['permname']?>"><?=$values['permname']?></label>
<? } ?>
2 ответа
Вы должны создать массив $arrUserDtls["userid"] = {user_permission_name}.
Вместо того
<?php if($post['userperm']) { echo " checked=checked'"; } ?>>
Пожалуйста, используйте это:
<?php if($arrUserDtls[$values] == $values['permname']) { echo " checked=checked'"; } ?>>
Я не уверен в логике, но вам не хватает одинарной кавычки после checked=
<?php if($post['userperm']) { echo " checked='checked'"; } ?>>
Кроме того, я боюсь, что for="<?=$values['permname']?>"
будет рассматриваться как строка, а не как код.
<label <?php echo "for='" . $values['permname'] . "'"; ?>><?=$values['permname']?></label>
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.