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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

JavaScript

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

4回答

1960閲覧

MysqlのINSERTをトリガーにajaxを実行したい

sa-ku-ra

総合スコア3

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

JavaScript

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

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

1グッド

1クリップ

投稿2021/09/16 08:59

編集2021/09/16 09:18

ajaxでデータを更新する際は、以下のように、setIntervalやclickをトリガーにすることが多いと思うのですが、

javascript

1setInterval(function () { 2 $.ajax({ ・・・ 3 }); 4}, 3000);

javascript

1$('#btn').on('click',function(){ 2 $.ajax({ ・・・ 3 }); 4});

以上のような方法ではなく、
MysqlのINSERTをトリガーとしてajaxを実行することは可能でしょうか。
もし可能でしたら、どのような方法を用いればよいか、ご教示いただきたく存じます。

INSERTした際に、非同期で最新idのデータ(INSERTしたデータ)を表示したいのですが、
setIntervalでは処理が重くなってしまうため、できれば他の方法で実現したいと考えています。

ご助言のほど何卒よろしくお願いいたします。

<追記>
イメージとしては、
ツイッターのようなチャットツールで、一番新しいメッセージのみ表示させたいです。

shinoharat👍を押しています

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

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

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

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

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

guest

回答4

0

MysqlのINSERTをトリガーとしてajaxを実行することは可能でしょうか。

限りなく不可能に近い話です。少なくとも現実的ではありません。

サーバー側で起こることとクライアント側で起こることを区別して考えることができないと、Web アプリの開発にはいろいろ支障がありますので、そのあたりをよく考えてみることをお勧めします。

投稿2021/09/16 09:20

編集2021/09/17 00:37
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

MysqlのINSERTをトリガーとしてajaxを実行することは可能でしょうか。

そもそも何をしたいのかがさっぱりわかりません。

MySQLへのINSERTが行われるのはデータベースサーバですが、Ajaxはブラウザ内から行うものです。

無理に技術用語を使わずに、「どんな操作をしたらどこで何を起こしたいか」をもう少し整理する必要があります。

投稿2021/09/16 09:07

maisumakun

総合スコア146018

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

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

maisumakun

2021/09/16 09:09

> INSERTした際に、非同期で最新idのデータ(INSERTしたデータ)を表示したいのですが 直接データベースサーバを叩いてINSERTするような状況でもないのであれば、「MySQLにアクセスするサーバサイドプログラム」から何かをするのが現実的です。
sa-ku-ra

2021/09/16 09:21

説明不足で申し訳ございません。 イメージとしては、ツイッターのようなチャットツールで、一番新しいメッセージのみ表示させたいです(質問内容にも追記いたしました)。 入力したメッセージをDBに挿入するところまではできています。
maisumakun

2021/09/16 09:22

「MySQLにアクセスするサーバサイドプログラム」はどの言語でどのように書かれたものなのでしょうか?
sa-ku-ra

2021/09/16 09:36

Mysqlに接続したPHPファイルをajaxに読み込んでいます。 (ご質問いただいた趣旨と違う回答になってしまっていたら申し訳ございません。) <ajax.php>(抜粋) $sql = "INSERT INTO message_box (name, message) VALUES(?, ?)"; $stmt = $dbh->prepare($sql); $stmt->execute(array($name, $price)); <ajax.js>(抜粋) $.ajax({ type: "POST", url: "ajax.php", datatype: "json", data: { "name" : $('#name').val(), "message" : $('#message').val() }, success: function(data) { $('#new_message').html(data[0].name + "<br>" + data[0]. message); console.log("通信成功"); console.log(data); }, error: function(data) { console.log("通信失敗"); console.log(data); } });
guest

0

<追記>

イメージとしては、
ツイッターのようなチャットツールで、一番新しいメッセージのみ表示させたいです。

調べた訳じゃないけどあれはユーザーのイベント検知してからajax実行しているだけだと思います
マウスの操作キーボードの操作ブラウザがアクティブになった、などですね

MysqlのINSERTをトリガーとしてajaxを実行することは可能でしょうか。

INSERTをトリガーにするのは無理だと思うので、ユーザーの操作に関わらずサーバー側で処理を実行し続けてINSERTされたかどうかフラグを判定材料としてクライアントへ情報を送るようにするのが現実的ですねsse

投稿2021/09/17 00:32

hentaiman

総合スコア6426

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

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

0

ベストアンサー

<追記>
イメージとしては、
ツイッターのようなチャットツールで、一番新しいメッセージのみ表示させたいです。

追記ありがとうございます。

そういう話でしたら、Rails や Laravel などのフレームワークを使って、「DBを更新し、更にクライアントに通知する」という一連のプログラムを組めば良いと思います。

MySQLとJavaScriptだけでは無理なので、サーバサイドのプログラミングの力で実現するイメージです。

サーバからクライアントへの通知は、WebSocket などの双方向通信技術が使えると思います。

投稿2021/09/16 09:36

shinoharat

総合スコア1685

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問