表題の通りですが、データベースに同じ値が入らないようにしたいです。
データベースではユニークキーを設定していますが、同じ値があった場合はアラートが出るようにしたいと考えております。
①入力ページ → ②入力完了ページ
とあり、すでに登録されている値が登録されようとしたら①入力ページでアラートが出るようにしたいです。
データはajaxで送っています。(下にjQueryのコードを記載しております。)
よろしくお願いします。
php
1// ①入力ページ 2<div class="icon_cow" id="icon_cow" style="margin:0;"> 3 <input class="likeButton<?php echo $i; ?>" type="image" src="<?php echo ROOT_PATH; ?>images/logo.jpg" onclick="" 4 style="margin:0; height:24px; margin:0; margin-left:3px; border:none;"> 5 <input type="hidden" name="auto_id" value="<?php echo $value['auto_id']; ?>"> 6 <?php foreach($driversId as $id) ?> 7 <input type="hidden" name="voter_id" value="<?php echo $id; ?>"> 8 <input type="hidden" name="submitter_id" value="<?php echo $value['driver_id']; ?>"> 9 <input type="hidden" name="unique_id" value="<?php echo $value['auto_id'].$id; ?>"> 10 //unique_idがデータベースに同じ値が入らないようにしたい値です。 11 <i class="far fa-thumbs-up"></i>
php
1// ②入力完了ページ 2<?php 3include_once "../../variable.php"; 4//include_once ABS_PATH."session.php"; 5 6try { 7 8 $driver_id = $_GET['driver_id']; 9 10 $auto_id = $_POST['auto_id']; 11 $voter_id = $_POST['voter_id']; 12 $submitter_id = $_POST['submitter_id']; 13 $unique_id = $_POST['unique_id']; 14 15 16 $sql = "SELECT COUNT(unique_id) AS counted FROM m_like_master 17 WHERE unique_id= " . $unique_id; 18 19 $stmt = $dbh->prepare($sql); 20 $stmt->execute(); 21 $countResult = $stmt->fetch(PDO::FETCH_ASSOC); 22 $current_unique_count = $countResult['counted']; 23 echo $current_unique_count; 24 25 if ($current_unique_count >= 1 ){ 26 $alert = "<script type='text/javascript'>alert('入力できません');</script>"; 27 echo $alert; 28 throw new Exception(); 29 } 30 31 32 $sql = "REPLACE INTO m_like_master( 33 auto_id, 34 voter_id, 35 submitter_id, 36 unique_id 37 ) VALUES (?,?,?,?)"; 38 39 $stmt = $dbh->prepare($sql); 40 41 $data[] = $auto_id; 42 $data[] = $voter_id; 43 $data[] = $submitter_id; 44 $data[] = $unique_id; 45 46 // SQLで指令を出すための命令 47 if( !$stmt->execute($data) ) { 48 echo 'クエリの送信に失敗しました。 SQL:'.$sql; 49 throw new Exception(); 50 } 51 52 // 必ずデータベース切断 53 $dbh = null; 54 55 56} catch(Exeption $e) { 57 echo 'ただいま障害により大変ご迷惑をお掛けしております(_ _)'; 58 exit(); 59} 60 61?> 62 63<?php include_once ABS_PATH."head.php"; ?></head> 64 65<body class="comp"> 66 67<?php 68header('Content-Type: application/json; charset=utf-8'); 69?> 70 71</body> 72</html>
jQuery
1 <?php 2 for($i=1;$i<=count($salesdata);$i++) { 3 ?> 4 5 $(function(){ 6 let likeButton = $(".likeButton<?php echo $i; ?>"); 7 let likeResult = $("#like_result<?php echo $i; ?>"); 8 9 likeButton.on('click', function(e){ 10 let $_parent = $( this ).closest( '.icon_cow' ); 11 $.ajax({ 12 type: 'POST', 13 url: "sales_report_like_done_ajaxPost.php", 14 data: { 15 auto_id : $_parent.find("input[name=auto_id]").val(), 16 voter_id : $_parent.find("input[name=voter_id]").val(), 17 submitter_id : $_parent.find("input[name=submitter_id]").val(), 18 unique_id : $_parent.find("input[name=unique_id]").val(), 19 } 20 }); 21 likeResult.text( Number(likeResult.text()) + 1 ); 22 return false; 23 }); 24 }) 25 26 <?php }; ?>
補足情報(FW/ツールのバージョンなど)
・バージョン
PHP 7.1.23
mysql 5.6.43
回答2件
あなたの回答
tips
プレビュー