簡體   English   中英

我的數據庫中有患者信息,現在我想在Laravel Project中以另一種形式訪問一個人的信息

[英]I have patients information in database, now I want to access one's information in another form in Laravel Project

我的數據庫中有患者信息,現在我想以其他形式訪問一個人的信息。 當我輸入患者的ID時,需要自動填寫/加載患者姓名字段。 我也有我的患者模型。

這是...

<form method="post" class="" action="" >
    @csrf
    <div class="input-field col s3">
        <input name="patient_id" id="id" type="text" class="validate">
        <label class="active" for="id">Patient ID</label>
    </div>

    <div class="input-field col s9">
        <input name="patient_name" id="name" type="text" class="validate">
        <label class="active" for="name">Patient Name</label>
    </div>

    <div class="input-field col s12">
        <select name="room">
            <option value="" disabled selected>Select Room</option>
            <option value="2001">ROOM 2001 - Non AC - 500</option>
            <option value="4001">ROOM 4001 - AC -800</option>
            <option value="301">CABIN 301 - AC - 1700</option>
        </select>
    </div>

    <div class="input-field col s12 text-center">
        <button class="btn waves-effect waves-light" type="submit" name="action">Assign Room</button>
    </div>
</form>

您可以

  1. 在刀片模板中創建json對象,如果存在特殊字符,可能會有些混亂。 另外,如果您有大量記錄,我也不認為這是一個好的解決方案。

  2. 我將使用一個庫,例如https://select2.org/ ,您將在這里找到https://select2.org/data-sources/ajax ...我個人使用了這個https://語義 -ui.com/modules/search.html#/examples ...但我認為select2更直接。

https://select2.org/data-sources/ajax的底部,您可以看到在查詢服務器時如何傳遞具有完整數據的對象。

由於名稱僅用於搜索ID(我假設)

您還可以調整控制器,使其看起來在CONCAT(id,name)中,以便用戶可以鍵入ID或名稱並找到患者。

通過compact將患者詳細信息傳遞到view ,並在輸入字段中相應地使用patient集合的值。

控制者

public function edit($id){
   $patient = Patient::find($id);
   return view('patients.edit, compact('patient'))
}

在視圖中

<input value="{{ old('name') ? old('name') : $patient->name }}" name="name" type="text" class="form-control" required>

你可以試試看

在輸入字段中輸入患者ID時執行JavaScript:

這是示例-> https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_ev_oninput

的HTML

 <input name="patient_id" id="id" type="text" class="validate" oninput="myFunction()">

Java腳本

function myFunction() {
   var p_id = document.getElementById("id").value;
   $.ajax({
       url: '{{URL::to('get_patient_name')}}'+ '/'+p_id,
       type: "get",
       success: function (data) {

       }
   });
}

現在選擇一條路線

Route::get('get_patient_name/{p_id}', 'PatientController@getPatientName'});

控制器中獲取患者姓名

public function getPatientName($id)
{
    return ModelName::where('patient_id',$id)->value('patient_name');
}

最后,在名稱輸入字段中打印患者姓名。

在javascript成功函數中

success: function (data) {
        $('#name').val(data);
}
<input name="patient_id" onkeydown="getInfo(this)" id="id" type="text" class="validate">

<script type="text/javascript">

function getInfo(input){

var xhr = new XMLHttpRequest();
            xhr.open("GET", 'your/url/to/get/info/from/db/'+input.value, true);
            xhr.setRequestHeader('Content-Type', 'application/json');
            xhr.send();
            xhr.onload = function() {
                var data = JSON.parse(this.responseText);
                document.getElementById('name').value = data.name;
                document.getElementById('room').innerHTML= '<option value="'+ 
data.room +'">'+data.room +'</option>';
data.name
                               }}

如果您想在不使用jquery的情況下進行操作,那么這里是Vanilla js

不要忘記更改請求網址!

document.querySelector("#id").addEventListener("change", function () {
        let xml = new XMLHttpRequest(),
            token = document.querySelector("input[name=_token]").value,
            id = document.querySelector("#id").value,
            name = document.querySelector("#name");

        xml.open("get", "get/" + id); // change url
        xml.setRequestHeader("X-CSRF-TOKEN", token);
        xml.onreadystatechange = function () {
            if (xml.readyState === 4) {
                var response = JSON.parse(xml.responseText);
                if (xml.status === 200 ) {
                    name.value = response
                } else {
                    console.log('something bad happened');
                }
            }
        };
        xml.send()
    })

然后在您的控制器中找到患者並發回

public function getPatient($id){

   $patient = Patient::find($id);

   return response()->json($patient->name);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM