У меня есть информация о пациентах в базе данных, теперь я хочу получить доступ к своей информации в другой форме в Laravel Project

У меня есть информация о пациентах в базе данных, теперь я хочу получить доступ к своей информации в другой форме. Когда я введу идентификатор пациента, поле имени пациента должно быть заполнено / загружено автоматически. У меня тоже есть модель пациента.

Это из ...

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

покажи свой код.

urfusion 18.08.2018 08:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
99
5

Ответы 5

Ты можешь

  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 вы можете увидеть, как объект с полными данными может быть передан при запросе к серверу.

Поскольку имя предназначено только для поиска идентификатора (я предполагаю)

Вы также можете настроить свой контроллер так, чтобы он выглядел в CONCAT (id, name), чтобы пользователь мог ввести идентификатор или имя и найти пациента.

Я сначала удалил ответ, потому что думал, что совершенно не по теме ... но я думаю, что это может быть полезно ...

Erubiel 18.08.2018 09:05

Передайте данные пациента в 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>

вы можете попробовать это.

Выполните 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);
}
<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

не забудьте изменить URL-адрес запроса!

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.info('something bad happened');
                }
            }
        };
        xml.send()
    })

Затем в вашем контроллере найдите пациента и отправьте обратно

public function getPatient($id){

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

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

Другие вопросы по теме