テレワーク補助アプリを作成しています。
ログインするとそのアカウントが所属している会社の社員リストと、やっている作業がメイン画面に表示されるというシステムになっています。
現在、このアプリの社員一覧の画面で、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
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。