我的数据库中有患者信息,现在我想在Laravel Project中以另一种形式访问自己的信息

时间:2018-08-18 06:14:24

标签: php ajax laravel eloquent

我的数据库中有患者信息,现在我想以另一种形式访问一个人的信息。当我输入患者的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>

5 个答案:

答案 0 :(得分:0)

您可以

  1. 在刀片模板中创建json对象,如果存在特殊字符,可能会有些混乱。另外,如果您有大量记录,我也不认为这是一个好的解决方案。

  2. 我会使用一个库,例如https://select2.org/,您将在这里找到https://select2.org/data-sources/ajax ...我个人使用的是这个https://semantic-ui.com/modules/search.html#/examples ...但是我认为select2更直接。

https://select2.org/data-sources/ajax的底部,您可以看到在查询服务器时如何传递具有完整数据的对象。

由于名称仅用于搜索ID(我假设)

您还可以调整控制器,使其显示在CONCAT(id,name)中,以便用户键入ID或名称并找到患者。

答案 1 :(得分:0)

通过view将患者详细信息传递到compact,并在输入字段中相应地使用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>

答案 2 :(得分:0)

您可以尝试一下。

在输入字段中输入患者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()">

JavaScript

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);
}

答案 3 :(得分:0)

<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
                               }}

答案 4 :(得分:0)

如果您想不使用jquery进行操作,那么这里是香草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);
}