下記のコードのように日報の各項目のあるテーブルを作成しておりまして、
foreachで各auto_id(各日報毎のid)をtableで一覧で表示しております。
そこでjQueryでlikeButtonというクラスをクリックしたらajaxで非同期で
いいねの数が表示されるという実装を行なっています。
ここまでたくさん質問させて頂きなんとかあと一歩のところまで来ているのですが、
jQueryで.load('sales_reportSP.php .like_result');とした時に、
表示される数字がauto_idの1~8の分まですべて表示されてしまいます。
リロードすると元に戻りDBにもちゃんと登録されています。
sqlのCOUNTで表示させている部分がおかしいのかと思っているのですがわかりません。
どなたかご教示いただけますと幸いです。
php
1<table> 2 <tr> 3 <th>担当</th> 4 <th>訪問日付<br>顧客名</th> 5 <th>目的<br>結果</th> 6 <th>内容</th> 7 </tr> 8 <?php if(!empty($salesdata) === true) { 9 $i = 0; 10 foreach ($salesdata as $value) { ?> 11 <tr> 12 <form action="../history/sales_report_commentSP.php" method="post"> 13 <td><?php echo $value['first_name']; ?></td> 14 <td> 15 <?php 16 $salesDate = explode("-", $value['sales_date']); 17 echo $salesDate[1] . '/' . $salesDate[2] . '<br><br>'; ?> 18 <p class="shop_url"> 19 <a href="<?php echo ROOT_PATH; ?>customer/list/customer_dispSP.php?salesClient_id=<?php echo $value['salesClient_id'] ?>" class="shop_url"><?php echo $value['shop_name']; ?></a> 20 </p> 21 </td> 22 <td> 23 <?php echo $value['progress_purpose_name'] . '<br><span>↓<span><br>' . $value['progress_name']; ?> 24 </td> 25 <td> 26 <p><?php echo $value['sales_history']; ?></p> 27 <input type="submit" class="comment far" value=""> 28 <input type="hidden" name="auto_id" value="<?php echo $value['auto_id']; ?>"> 29 <input type="hidden" name="driver_id" value="<?php echo $value['driver_id']; ?>"> 30 <input type="hidden" name="first_name" value="<?php echo $value['first_name']; ?>"> 31 <input type="hidden" name="last_name" value="<?php echo $value['last_name']; ?>"> 32 <input type="hidden" name="sales_date" value="<?php echo $value['sales_date']; ?>"> 33 <input type="hidden" name="shop_name" value="<?php echo $value['shop_name']; ?>"> 34 <input type="hidden" name="progress_purpose_name" value="<?php echo $value['progress_purpose_name']; ?>"> 35 <input type="hidden" name="progress_name" value="<?php echo $value['progress_name']; ?>"> 36 <input type="hidden" name="sales_history" value="<?php echo $value['sales_history']; ?>"> 37 </form> 38 <!-- いいねアイコン --> 39 <div class="icon_cow" style="margin:0;"> 40 <input class="likeButton<?php echo $i ?>" type="image" src="<?php echo ROOT_PATH; ?>images/logo.jpg" onclick="" 41 style="margin:0; width:24px; height:24px; margin:0; margin-left:3px; border:none;"> 42 <input type="hidden" name="auto_id" value="<?php echo $value['auto_id']; ?>"> 43 <?php foreach($driversId as $id) ?> 44 <input type="hidden" name="voter_id" value="<?php echo $id; ?>"> 45 <input type="hidden" name="submitter_id" value="<?php echo $value['driver_id']; ?>"> 46 <i class="far fa-thumbs-up"></i> 47 <?php 48 try { 49 $dbh = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD, $options); 50 $dbh->query('SET NAMES utf8'); 51 52 // m_like_masterからauto_idに紐づいたlike_idの数をカウントし取得。 AS counted を引数にしています 53 $sql = "SELECT COUNT(like_id) AS counted FROM m_like_master 54 WHERE auto_id= " . $value['auto_id']; 55 56 $stmt = $dbh->prepare($sql); 57 $stmt->execute(); 58 $countResult = $stmt->fetch(PDO::FETCH_ASSOC); 59 $current_like_count = $countResult['counted']; 60 61 $dbh = null; 62 63 } catch (PDOException $e) { 64 exit('顧客データベース接続失敗。'.$e->getMessage()); 65 } ?> 66 <!-- いいね数の表示 --> 67 <p class="like_result"><?php echo $current_like_count; ?></p> 68 <input type="hidden" name="auto_id" value="<?php echo $value['auto_id']; ?>"> 69 <input class="like_num" type="submit"> 70 </div> 71 </td> 72 </tr> 73 <?php $i++; } ?> 74</table>
jQueryは同一のhtml内、body一番下に記載しています。
jQuery
1 let likeButton = $(".likeButton<?php echo $i; ?>"); 2 3 likeButton.on('click', function(e){ 4 console.log(e) 5 let $_parent = $( this ).closest( '.icon_cow' ); 6 $.ajax({ 7 type: 'POST', 8 url: "sales_report_like_done_ajaxPost.php", 9 data: { 10 auto_id : $_parent.find("input[name=auto_id]").val(), 11 voter_id : $_parent.find("input[name=voter_id]").val(), 12 submitter_id : $_parent.find("input[name=submitter_id]").val(), } 13 }); 14 }); 15 16 likeButton.on('click', function(){ 17 $('.like_result').load('sales_reportSP.php .like_result'); 18 }); 19
補足情報(FW/ツールのバージョンなど)
・バージョン
PHP 7.1.23
mysql 5.6.43