回答編集履歴

2

調整

2024/05/24 04:10

投稿

yambejp
yambejp

スコア115296

test CHANGED
@@ -17,3 +17,68 @@
17
17
  <input type="submit" >
18
18
  </form>
19
19
  ```
20
+
21
+ # 参考
22
+ 便宜的にgoodをセッションに保持しておきます。実際にはDBで管理してください
23
+ ```php
24
+ <?PHP
25
+ session_start();
26
+ if(filter_input(INPUT_POST,"reset")){
27
+ session_destroy();
28
+ }
29
+ if(filter_input(INPUT_GET,"load")){
30
+ print json_encode($_SESSION["ids"]??[]);
31
+ exit;
32
+ }
33
+ if($id=filter_input(INPUT_GET,"good")){
34
+ $ids=$_SESSION["ids"]??[];
35
+ $ids[$id]=($ids[$id]??0)+1;
36
+ $_SESSION["ids"]=$ids;
37
+ print json_encode(["id"=>$id,"count"=>$ids[$id]]);
38
+ exit;
39
+ }
40
+
41
+ if($_POST){
42
+ $_SESSION["hoge"]=$_POST["hoge"]??null;
43
+ header("Location:{$_SERVER["SCRIPT_NAME"]}");
44
+ exit;
45
+ }else{
46
+ print_r($_SESSION);
47
+ unset($_SESSION["hoge"]);
48
+ }
49
+ ?>
50
+ <script>
51
+ window.addEventListener('DOMContentLoaded', ()=>{
52
+ fetch(`?load=1`).then(res=>res.json()).then(res=>{
53
+ Object.entries(res).forEach(data=>Object.assign(document.querySelector(`[data-good="${data[0]}"] span`)??{},{textContent:data[1]}));
54
+ });
55
+ });
56
+ document.addEventListener('click',({target})=>{
57
+ if(target.matches('[type=button]') && target.closest('[data-good]')){
58
+ const usp= new URLSearchParams();
59
+ usp.append("good",target.closest('[data-good]').dataset.good);
60
+ fetch(`?${usp}`).then(res=>res.json()).then(data=>{
61
+ document.querySelector(`[data-good="${data.id}"] span`).textContent=data.count;
62
+ });
63
+ }
64
+ });
65
+ </script>
66
+ <form method="post">
67
+ <input name="hoge" value="123">
68
+ <input type="submit" >
69
+ <input type="submit" name="reset" value="reset" >
70
+ </form>
71
+
72
+ <div data-good="1">
73
+ <span></span>
74
+ <input type="button" value="いいね">
75
+ </div>
76
+ <div data-good="2">
77
+ <span></span>
78
+ <input type="button" value="いいね">
79
+ </div>
80
+ <div data-good="3">
81
+ <span></span>
82
+ <input type="button" value="いいね">
83
+ </div>
84
+ ```

1

typo

2024/05/24 02:17

投稿

yambejp
yambejp

スコア115296

test CHANGED
@@ -1,4 +1,4 @@
1
- ページであってもセッションを使って完了状態にします
1
+ ページであってもセッションを使って遷移し完了状態にします
2
2
  ```PHP
3
3
  <?PHP
4
4
  session_start();