質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

2124閲覧

DBから受信したデータの中から、特定条件の重複データがある場合WEB上にアラートメッセージを表示させたい

jam912sh

総合スコア25

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2018/11/28 06:28

編集2018/11/28 06:35

前提・実現したいこと

DBから受信したデータの中で、2つの項目にて重複レコードがある場合、
テーブルリストに重複データを表示させ、更にWEB上の右上辺りに「アラートメッセージ」
を表示させたいです。
重複データは問題なくテーブルリストに表示できました。
また、右上にアラートが表示されるように「notify.js」は実装しました。
しかし「notify.js」は実装しただけで、常にWEB上には「アラートメッセージ」
が表示される状態です。

期待動作は、重複データがある場合は、「テーブルリスト」に表示させ、
「アラートメッセージ」が出るようにしたいです。
「PHP」「JavaScript」にお詳しい方、ご教示頂たく存じます。
宜しくお願い致します。

該当のソースコード(HTML)

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script type="text/javascript" src="js/notify.js"></script> <title>テスト</title> </head> <body> <!--アラート--> <script type="text/javascript"charset="utf-8"> $.notify('重複登録アラート', 'error'); </script> <!--重複リストの表示--> <?php include("notifi.php"); ?> </body> </html>

該当のソースコード(notifi.php)

<?php //カテゴリ1とカテゴリ2にて5つ同じ登録がされた場合にリストを作成 $query = "SELECT category1, category2 ,COUNT(category1) FROM m_commutra GROUP BY category , trainid HAVING COUNT(category) > 1 AND COUNT(trainid) > 1"; $result = pg_query($conn, $query); $data = pg_fetch_all($result); print "<table id=\"dblist2\" summary=\"PostgreSQLデータベース\">\n"; //テーブルヘッダとしてフィールド(カラム)名を出力 print "<thead><tr>\n"; $flds = pg_num_fields($result); for($i=0; $i<$flds; $i++){ $field = pg_field_name($result, $i); printf("<th abbr=\"%s\">%s</th>\n", $field, $field); } print "</tr></thead>\n"; //データの出力 foreach($data as $rows){ print "<tr>\n"; foreach($rows as $value){ printf("<td>%s</td>\n", $value); } print "</tr>\n"; } print "</table>\n"; echo <<<EOM <script type="text/javascript"> $(document).ready(function() { $("#dblist2").tablesorter(); } ); </script> EOM; ?>

該当のDB

※この場合「2」「4」の「いちご」「まずかった」が重複データです。

ID,category1,category2,data 1,スイカ,美味しかった,2018/12/01 2,いちご,まずかった,2018/12/01 3,スイカ,まずかった,2018/12/01 4,いちご,まずかった,2018/12/01

補足情報(FW/ツールのバージョンなど)

PostgreSQL:10.4
PHP:5.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

目的にかなうかどうかわかりませんが・・・重複データ有無の判定ができているとして・・・。

だいぶはしょりますが html はこれだけとして

html

1<!DOCTYPE html> 2 3<html lang="ja"> 4<head> 5<meta charset="utf-8"> 6<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 7<title>テスト</title> 8</head> 9<body> 10 <!--重複リストの表示--> 11 <?php 12 include("notifi.php"); 13 ?> 14</body> 15</html>

php

1<?php 2 34 5 print "<table id=\"dblist2\" summary=\"PostgreSQLデータベース\">\n"; 6 7 //テーブルヘッダとしてフィールド(カラム)名を出力 8 print "<thead><tr>\n"; 9 $flds = pg_num_fields($result); 10 for($i=0; $i<$flds; $i++){ 11 $field = pg_field_name($result, $i); 12 printf("<th abbr=\"%s\">%s</th>\n", $field, $field); 13 } 14 print "</tr></thead>\n"; 15 16 //データの出力 17 18 $duplicate = false; 19 20 // たぶんここで重複かどうかは判断できてるんですよね? 21 22 if (重複だったら) 23 { 24 $duplicate = true; 25 } 26 27 foreach($data as $rows){ 28 print "<tr>\n"; 29 foreach($rows as $value){ 30 printf("<td>%s</td>\n", $value); 31 } 32 print "</tr>\n"; 33 } 34 print "</table>\n"; 35 36echo <<<EOM 37<script type="text/javascript"> 38$(document).ready(function() 39{ 40 $("#dblist2").tablesorter(); 41} 42); 43</script> 44EOM; 45 46if ($duplicate == true) 47{ 48 print '<script type="text/javascript"charset="utf-8">'; 49 print "alert('重複登録アラート', 'error');"; 50 print '</script>'; 51} 52?>

 一応、これで 目的は果たせるのでは?
あまり綺麗とは言えませんが・・・。

投稿2018/11/28 07:13

showkit

総合スコア1638

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jam912sh

2018/11/28 07:26

showkit様、ご教示頂き有難うございます!上記コードにて期待通りの動作になる事を確認致しました。 お忙しい中、ご教示頂き有難うございました!大変助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問