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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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

JavaScript

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

Q&A

解決済

1回答

1334閲覧

phpのautocompleteにサーバーからの値を代入して選択した際に重複チェックしたい

kou___chan

総合スコア27

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

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

JavaScript

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

0グッド

0クリップ

投稿2021/10/27 13:38

メイン.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 &emsp;&emsp;&emsp;&emsp;<input class="form-check-input fs-4" name="radio" type="radio" value="削除"><font size="1">&emsp;削除</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やプルダウンメニューへ反映できればと思います。

宜しくお願いいたします

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

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

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

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

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

guest

回答1

0

自己解決

autocompleteにて選択した際、イベントselectからlocation.reloadすることで画面更新ができました

javascript

1select: function(event, ui) { 2 const data = ui.item.value; // 渡したいデータ 3 $.ajax({ 4 type: "POST", // GETでも可 5 url: "request.php", // 送り先 6 data: { 'データ': data }, // 渡したいデータをオブジェクトで渡す 7 dataType : "json", // データ形式を指定 8 scriptCharset: 'utf-8' // 文字コードを指定 9 }) 10 .then( 11 function(param){  // paramに処理後のデータが入って戻ってくる 12 console.log(param); // 帰ってきたら実行する処理 13 }, 14 function(XMLHttpRequest, textStatus, errorThrown){ // エラーが起きた時はこちらが実行される 15 console.log(XMLHttpRequest); // エラー内容表示 16 }); 17 location.reload();

投稿2021/10/30 01:16

kou___chan

総合スコア27

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問