メイン.phpにてautocompleteの設定
php
1list ($a, $err_msg) =autocomplete_get_member_data($link, $err_msg); 2//$a = json_encode($a,JSON_UNESCAPED_UNICODE); 3//$a=var_export($a); 4 5$cnt=0; 6$x = array();//初期化 7foreach ($a as $value) { 8 if ($value === reset($a)) { 9// $x = "array('" . $a[$cnt]['氏名'] . "','"; 10 $x[$cnt] = $a[$cnt]['氏名']; 11 }else if ($value === end($a)) { 12 $x[$cnt] = $a[$cnt]['氏名']; 13// $a=$x; 14 }else{ 15 $x[$cnt] = $a[$cnt]['氏名']; 16 } 17 18 ++$cnt; 19}
モデル.phpにてサーバーの値を取得する
php
1//社員情報データ取得autocomplete用---------------------------------------------------------------------- 2function autocomplete_get_member_data($link, $err_msg) { 3 $data = []; 4 $sql = "SELECT 氏名 FROM hakensakijinzai ORDER BY 氏名"; 5 $result = mysqli_query($link, $sql); 6 if ($result === false) { 7 $err_msg[] = 'SQLエラー!'; 8 } else { 9 while ($row = mysqli_fetch_assoc($result)) { 10 $data[] = $row; 11 } 12 } 13 return array($data, $err_msg); 14}
ビュー.phpにて表示する
html、php
1<div class="permit col-11"> 2 <label for="regular_employee_name" class="form-label"><span class="fs-6 text-danger">※</span>【氏 名】 3     <input class="form-check-input fs-4" name="radio" type="radio" value="削除"><font size="1"> 削除</font></label> 4 <input type="text" id="regular_employee_name" class="form-control" name="regular_employee_name" value="<?php if($_SESSION['regular_employee_flg']) {print $_SESSION['regular_employee_name'];}else{print '';} ?>" placeholder="例)山田太郎"> 5 </div>
java
1 <script> 2 $('#regular_employee_name').autocomplete({ 3 select: function(event, ui) { 4 const data = ui.item.value; // 渡したいデータ 5 $.ajax({ 6 type: "POST", // GETでも可 7 url: "request.php", // 送り先 8 data: { 'データ': data }, // 渡したいデータをオブジェクトで渡す 9 dataType : "json", // データ形式を指定 10 scriptCharset: 'utf-8' // 文字コードを指定 11 }) 12 .then( 13 function(param){ // paramに処理後のデータが入って戻ってくる 14 console.log(param); // 帰ってきたら実行する処理 15 }, 16 function(XMLHttpRequest, textStatus, errorThrown){ // エラーが起きた時はこちらが実行される 17 console.log(XMLHttpRequest); // エラー内容表示 18 }); 19 } 20 }); 21 </script>
autocompleteにて氏名選択時、java scriptのselectにて取得した値をrequest.phpにて飛ばして処理
php
1<?php 2require_once '../../bsinclude/conf/server_const.php'; 3require_once '../../bsinclude/model/regular_employee_add_model.php'; 4//セッションスタート-------------------------------------------- 5session_start(); 6 7header('Content-type: application/json; charset=utf-8'); // ヘッダ(データ形式、文字コードなど指定) 8$data = filter_input(INPUT_POST, 'データ'); // 送ったデータを受け取る(GETで送った場合は、INPUT_GET) 9//$_SESSION['regular_employee_name'] = $data; 10 11$param = $data; // やりたい処理 12 13$_SESSION['regular_employee_name'] = $data; 14 15echo json_encode($param); // echoするとデータを返せる(JSON形式に変換して返す)
ここでsessionへ氏名を代入しておく
※ここで処理したいのですが、多く処理を入れると動かなくなります…
その後、メイン.phpにて氏名を使って重複処理をおこない、取得まではいくのですが、
java scriptのselect処理(autocomplete選択時)に処理したい。
現在は氏名選択後、enter押下すると更新(リダイレクト?)して画面にデータベースの値が反映される状態です。
autocompleteの氏名を選択した瞬間に氏名をキーにサーバの値を他のtextやプルダウンメニューへ反映できればと思います。
宜しくお願いいたします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。