回答編集履歴

1

追記

2018/01/11 02:59

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -39,3 +39,89 @@
39
39
  ```
40
40
 
41
41
  というようなやり方もあります。
42
+
43
+
44
+
45
+
46
+
47
+ # 追記
48
+
49
+ 最終的にDB上の属性を変更させるための処理なので、
50
+
51
+ チェックボックスで値を受け渡しすると属性を外すことができません。
52
+
53
+ 以下$insにある方をinsert ignore intoで、$delにある方をdelete で処理します
54
+
55
+ html側でp[r]=""のようにからデータも送るようにしないなら
56
+
57
+ 付いている属性を外すことができなくなるので
58
+
59
+ 基本的には一度すべて削除してから追加していくような何らかの工夫が必要になります
60
+
61
+
62
+
63
+
64
+
65
+ ```PHP
66
+
67
+ $checked=["r"=>"","w"=>"","x"=>""];
68
+
69
+ $p=filter_input(INPUT_POST,"p",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY);
70
+
71
+
72
+
73
+ if(is_array($p)){
74
+
75
+ $ins=$del=[];
76
+
77
+ foreach($p as $key=>$val){
78
+
79
+ if(array_key_exists($key,$checked)){
80
+
81
+ $checked[$key]=$val==1?" checked":"";
82
+
83
+ if($val=="1"){
84
+
85
+ $ins[]=$key;
86
+
87
+ }else{
88
+
89
+ $del[]=$key;
90
+
91
+ }
92
+
93
+ }
94
+
95
+ }
96
+
97
+ print_r($ins);
98
+
99
+ print_r($del);
100
+
101
+ }
102
+
103
+ print <<<eof
104
+
105
+ <form method="post">
106
+
107
+ <input type="hidden" name="p[r]" value="">
108
+
109
+ <input type="hidden" name="p[w]" value="">
110
+
111
+ <input type="hidden" name="p[x]" value="">
112
+
113
+ <input type="checkbox" name="p[r]" value="1"{$checked["r"]}>閲覧
114
+
115
+ <input type="checkbox" name="p[w]" value="1"{$checked["w"]}>登録
116
+
117
+ <input type="checkbox" name="p[x]" value="1"{$checked["x"]}>削除
118
+
119
+ <input type="submit" value="go">
120
+
121
+ </form>
122
+
123
+ eof;
124
+
125
+
126
+
127
+ ```