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

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

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

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

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Ajax

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

Q&A

解決済

2回答

2854閲覧

ajaxを使用してDBから定期的に特定のデータを取得したいと考えています。

Matsuta174320

総合スコア4

MySQL

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

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

Ajax

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

0グッド

0クリップ

投稿2021/01/25 07:53

テレワーク補助アプリを作成しています。

ログインするとそのアカウントが所属している会社の社員リストと、やっている作業がメイン画面に表示されるというシステムになっています。

現在、このアプリの社員一覧の画面で、ajaxを使用して、DBから定期的に社員データを更新できるようにしたいと考えています。

index.php、ajax.phpのどちらも、データベースから値を取得することはできたのですが、ajax.phpにindex.phpの$user_idや$company_idなどの変数を渡す方法が分かりません。

尚、こちらのサイトを参考に、ajaxの処理を作成しました。
https://www.sejuku.net/blog/25316
こちらの「ページの一部だけをリロードする方法」の「jqueryを使う方法」を参考に作成しました。

php変数をajaxに渡す処理に関して、何か情報があれば教えていただけると幸いです。

以下がコードです。

index.php

php

1 <?php 2 3require_once("lib/util.php"); 4 5$user = "(ユーザー名)"; 6$password = "(パスワード)"; 7 8$dbName = "(データベース名)"; 9$host = "(ホスト)"; 10$dsn = "mysql:host=$host;dbname=$dbName;charset=utf8"; 11 12//ユーザーIDと、所属会社の会社ID 13$user_id = 1; 14$company_id = 3; 15 16?> 17<!DOCTYPE html> 18<html lang="ja"> 19 <head> 20 <meta charset="utf-8" /> 21 <title>HTML</title> 22 <!-- jQuery CDN: https://code.jquery.com/ --> 23 <script src="https://code.jquery.com/jquery-2.2.4.js" integrity="sha256-iT6Q9iMJYuQiMWNd9lDyBUStIq/8PuOW33aOqmvFpqI=" crossorigin="anonymous"></script> 24 <script type="text/javascript" src="jquery-ajax.js?ver=1.0"></script> 25 </head> 26 27<body> 28<?php 29 30 try { 31 $pdo = new PDO($dsn, $user, $password); 32 $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 33 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 34 35 $sql = "SELECT * FROM tbl_user WHERE user_id != $user_id AND work_flag = 1 AND company_id = $company_id"; 36 $stm = $pdo->prepare($sql); 37 $stm->execute(); 38 39 $result = $stm->fetchAll(PDO::FETCH_ASSOC); 40 41 foreach ($result as $row){ 42 43 es($row['user_id']); 44 es($row['company_id']); 45 es($row['user_name']); 46 es($row['now_task']); 47 es($row['update_date']); 48 49 } 50 51 // $user_id = $row['user_id']; 52 // $user_name = $row['user_name']; 53 // $now_task = $row['now_task']; 54 // $update_date = $row['update_date']; 55 56 } catch(Exception $e){ 57 echo '<span class="error">エラーがありました</span><br>'; 58 echo $e->getMessage(); 59 exit(); 60 } 61 62 ?> --> 63 64 <div id="ajaxreload"> 65 <h1>jQuery更新エリア</h1> 66 67 <p class="article"> 68 69 70<?php 71foreach ($result as $row) { 72 73 ?> 74 75 <tbody> 76 <tr> 77 <td><?=es($row['user_name'])?><p>現在の作業:<?=es($row['now_task'])?><br>最終更新:<?=es($row['update_date'])?></p> 78 </td> 79</tr> 80 <?php 81} 82 ?> 83 </p> 84 </div> 85</body> 86 87</html> 88

ajax-jquery.js

js

1 2function dojQueryAjax() { 3 4 // jQueryのajaxメソッドを使用しajax通信 5 $.ajax({ 6 type: "POST", // GETメソッドで通信 7 8 url: "ajax.php", // 取得先のURL 9 10 cache: false, // キャッシュしないで読み込み 11 12 // 通信成功時に呼び出されるコールバック 13 success: function (data) { 14 15 $('#ajaxreload').html(data); 16 17 }, 18 // 通信エラー時に呼び出されるコールバック 19 error: function () { 20 21 alert("Ajax通信エラー"); 22 23 24 } 25 }); 26 27} 28 29 30window.addEventListener('load', function () { 31 32 setInterval(dojQueryAjax, 5000); 33 34});

ajax.php

php

1<?php 2require_once("lib/util.php"); 3 4$user = "(ユーザー名)"; 5$password = "(パスワード)"; 6 7$dbName = "(データベース名)"; 8$host = "(ホスト)"; 9$dsn = "mysql:host=$host;dbname=$dbName;charset=utf8"; 10 11 12 13?> 14<!DOCTYPE html> 15<html lang="ja"> 16<head> 17<title>レコードを取り出す</title> 18</head> 19 20<body> 21 <?php 22 23 try { 24 $pdo = new PDO($dsn, $user, $password); 25 $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 26 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 27 28 //$user_idと$company_idをindex.phpやjquery-ajax経由で取得したい 29 $sql = "SELECT * FROM tbl_user WHERE user_id != $user_id AND company_id = $company_id"; 30 $stm = $pdo->prepare($sql); 31 $stm->execute(); 32 33 $result = $stm->fetchAll(PDO::FETCH_ASSOC); 34 35 foreach ($result as $row){ 36 37 es($row['user_id']); 38 es($row['user_name']); 39 es($row['now_task']); 40 es($row['update_date']); 41 42 } 43 44 // $user_id = $row['user_id']; 45 // $user_name = $row['user_name']; 46 // $now_task = $row['now_task']; 47 // $update_date = $row['update_date']; 48 49 } catch(Exception $e){ 50 echo '<span class="error">エラーがありました</span><br>'; 51 echo $e->getMessage(); 52 exit(); 53 } 54 55 ?> 56 57 58<div class="ajaxReturn"> 59 <h1>登録ユーザー</h1> 60 <p class="article"> 61 62 <?php 63 foreach ($result as $row) { 64 ?> 65 66 <tbody> 67 <tr> 68 <td><?=es($row['user_name'])?><p>現在の作業:<?=es($row['now_task'])?><br>最終更新:<?=es($row['update_date'])?></p> 69 </td> 70 </tr> 71 <?php 72 } 73 ?> 74 </p> 75</div> 76 77 78</body> 79 80</html> 81

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

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

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

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

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

guest

回答2

0

ajaxのアクセス先は外部のURLですか?
(例示だと内部に見えないこともない)
もし外部だとCORSで弾かれるかもしれないので先方のサーバー管理者に
状況を確認する必要があります

投稿2021/01/25 11:49

yambejp

総合スコア116724

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

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

0

ベストアンサー

data: { 'user_id': 'xxx', 'company_id': 'yyy' }

といった感じで渡します。

例: https://qiita.com/zakiyamaaaaa/items/bdda422db2ccbaea60d9

投稿2021/01/25 08:16

68user

総合スコア2022

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

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

Matsuta174320

2021/01/26 06:04

ありがとうございます。無事実装できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問