ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

ในบทความนี้จะมาอธิบายเรื่อง การแสดงขั้นตอนวิธีการสร้าง List box เพื่อจะค้นหาข้อมูลใน Database ของ Laravel โดยตัวเว็บจำลอง server ที่ใช้ก็คือ phpMyadmin ซึ่งเหมาะจะเป็นแนวทางในการนำเสนอและพัฒนาตัวเว็บโปรแกรม ซึ่งจะเป็นประโยชน์สำหรับผู้ที่ต้องการเริ่มจะศึกษา ซึ่งสามารถดูวิธีขั้นตอนการทำงานของ Laravel Framework ได้จากบทความนี้

 

วิธีค้นหาข้อมูลจาก Listbox ใน Laravel Framework

 

1.ให้เข้าไปทำการสร้าง Model Airflight,Airport,Airline , เพื่อไว้สร้างความสัมพันธ์ข้อมูล

 

Model relationship
Model relationship

ตัวอย่าง Code Model Airflight :

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Airflight extends Model
{


	public function airport_path()  //สร้าง Function ขึ้นมา , เพื่อกำหนดความสัมพันธ์ข้อมูล

    {
        return $this->belongsTo('App\Airport', 'path','id'); //เชื่อมต่อ Foreign Key path ที่มาจากตาราง airflights , และเชื่อมต่อ Primary key  id ของตาราง airports                         
    }


     public function airport()

    {
        return $this->belongsTo('App\Airport', 'id_airport','id');                                          
    }


 
     public function airline()                     
                                                    
    {
        return $this->belongsTo('App\Airline', 'id_airline','id');    
                                                    
    }
   
}

 

ตัวอย่าง Code Model Airport :

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Airport extends Model
{
    public function airflight_1() //สร้าง Function airflight_1()						
    												
    {
        return $this->hasMany('App\Airflight','id_airport','id'); //ส่งค่ากุญแจ Foreign key 'id_airport' กับ Primary key 'id' ไปที่  Model Airflight		
        											
    }


    public function airflight_path()						
    												
    {
        return $this->hasMany('App\Airflight','path','id');		
        											
    }
    

 

ตัวอย่าง Code Model Airline :

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Airline extends Model
{


public function airflight_2()						
{
        return $this->hasMany('App\Airflight','id_airline','id');  					
    }
 
}

 

2.ให้ทำการสร้าง Controller_show_Airflight.php ขึ้นมา โดยทำการเปิด Command Prompt ขึ้นมา , แล้วใช้คำสั่งสร้าง ดังนี้

php artisan make:controller Controller_show_airflight --resource

 

3.ให้เข้าไปที่ File Controller , โดยเข้าไปที่ App/http/Controller/Controller_show_airflight.php

การสร้าง Controller
Controller_show_airflight.php

 

4. ทำการ Import ตัว Model Airflight , Airport ,Airline เข้ามาทำงาน

Import Model
Import Model

 

5. ให้ทำการส่งค่า flight ไปที่ ตาราง showAirflight.blade.php จาก function index() แล้วมีการส่งค่า 'flight_1' ไปเปรียบเทียบค่า Key กับ Value ตรงหรือไม่

Function search()
Function search()

 

6. ให้ทำการสร้าง File showAirflight.blade.php  

showAirflight.blade.php
showAirflight.blade.php

 

7. ทำการสร้าง Form และตารางไว้แสดงข้อมูลในหน้า showAirflight.blade.php ขึ้นมา , โดยมีการสร้าง listbox เพิ่มขึ้นมาด้วย

listbox showAirflight.blade.php
listbox showAirflight.blade.php

 

8. เมื่อมีการกดปุ่มค้นหา จะวิ่งที่ Route ที่เราตั้งเอาไว้ แล้วก็วิ่งไปที่ Controller กับ Function ที่เราสร้างขึ้นมา

เมื่อกดปุ่มค้นหา จะวิ่งไปที่ Route ที่เราตั้งเอาไว้
เมื่อกดปุ่มค้นหา จะวิ่งไปที่ Route ที่เราตั้งเอาไว้

ตัวอย่าง Code showAirflight.blade.php :

@extends('layouts.master')                                  <!-- เป็นการดึง File Template ใน Folder layouts ใน File admin มาร่วมใช้งาน -->
@section('content')




<div class="table-responsive ">


    <h2>ตารางเที่ยวบิน</h2>
    <table class="table">
      <thead class="thead-dark">

         
        
    
     <form class="" method="get" name="search" action="/searchAirflight/search">

        <tr>
          <th scope="col">ลำดับ</th>
          <th scope="col">
             <select name="name_airport" id="name_airport"  >

      <option value="0" selected="selected">---- เลือกทั้งหมด ----</option>
      <?php $number = 1; ?>
  
      @foreach($airport as $airports)           <!-- ทำการวน Loop เพื่อแสดงข้อมูล หรือ ดึงข้อมูลมาใช้งาน -->
      <option value="{{$airports->id}} " {{ ( $airports->id == $flight_1['name_airport']) ? 'selected' : '' }}  <!-- มีการส่งค่า id airports ผ่าน value ...-->
                                                                                <!-- ... นำค่า id นั้นมาเปรียบเทียบกับ name_airport ว่าตรงกันไหม ...-->
      >{{$number}}<?php echo ".";?>{{$airports->name}} </option>            <!-- ... ดึงชื่อ name มาจากตารางสนามบิน เพื่อแสดงข้อมูลไว้สำหรับ  ...-->
                                                                            <!-- ... และไม่ต้องให้ข้อมูลแสดง show ซ้ำกันหลายๆค่า  ...-->
      <?php $number++; ?>
      @endforeach
    
    </select>


            <br><br>ชื่อที่ตั้งสนามบิน</th>
          <th scope="col">

            <select name="name_airline" id="name_airline">
      <option value="0" selected="selected">---- เลือกทั้งหมด ----</option>
       <?php $number = 1; ?>
     @foreach($airline as $airlines)
      <option value="{{$airlines->id}}" {{ ( $airlines->id == $flight_1['name_airline']) ? 'selected' : '' }}
        >{{$number}}<?php echo ".";?>{{$airlines->name_airline}}</option>
      <?php $number++; ?>  
      @endforeach
    </select>

            <br><br>ชื่อสายการบิน</th>
          <th scope="col">

             <select name="path" id="path">
      <option value="0" selected="selected">---- เลือกทั้งหมด ----</option>
      <?php $number = 1; ?>
     @foreach($airport as $airports)
      <option value="{{$airports->id}}" {{ ( $airports->id == $flight_1['path']) ? 'selected' : '' }}
    >{{$number}}<?php echo ".";?>{{$airports->name}}</option>
    <?php $number++; ?>  
     @endforeach
    </select>

            <br><br>สนามบินปลายทาง</th>
          <th scope="col">วันที่</th>
          <th scope="col">เวลาออกเดินทาง</th>
          <th scope="col">ราคา</th>
          <th scope="col">รุ่นเครื่องบิน</th>
          <th scope="col">แก้ไข</th>
          <th scope="col">

              <button type="submit" name="submit" class="btn btn-primary" name="submit">ค้นหา</button>
            <br><br>ลบ</th>
        </tr>
        </form>      
      </thead>
      <tbody>
        <?php $number = 1; ?>
        @foreach($flight as $flights)
        <tr>
          <th scope="row">{{$number}}</th>
          <td>{{$flights->airport['name']}}</td>
          <td>{{$flights->airline['name_airline']}}</td>
          <td>{{$flights->airport_path['name']}}</td>
          <td>{{$flights->date}}</td>
          <td>{{$flights->timeout}}</td>
          <td>{{$flights->price}}</td>
          <td>{{$flights->model_aircraft}}</td>
          
          
          <td>
            <a href="/editAirflight/{{$flights->id}}" class="btn btn-primary">แก้ไข</a>
          </td>
          
          <td>
            <a href="/deleteAirflight/{{$flights->id}}" onclick="return confirm('คุณต้องการลบข้อมูลหรือไม่ ?')" class="btn btn-danger">ลบข้อมูล</a>
          </td>
        </tr>
        <?php $number++; ?>
        @endforeach
        
      </tbody>

       <tbody>
        <?php $number = 1; ?>

        
        
      </tbody>

    </table>

    <div class="d-flex flex-column flex-md-row align-items-center p-3 px-md-4 mb-3 bg-white border-bottom shadow-sm">
      <a href="/createAirflight" class="btn btn-primary">เพิ่มข้อมูล</a>
     

       
     </div>

    
{{$flight->appends(Request::all())->links()}}


    </div>
  
  @endsection

 

9. มีการรับค่า Request เข้ามา ที่ส่งมาจาก Form showAirflight.blade.php

มีการรับค่า Request เข้ามา
มีการรับค่า Request เข้ามา

 

10. คืนค่าไปแสดงในส่วนตารางแสดงข้อมูล ส่งไปที่ showAirflight.blade.php

คืนค่าไปแสดงข้อมูลในส่วนของค้นหา
คืนค่าไปแสดงที่จากการค้นหาไปแสดงที่ showAirflight.blade.php

ตัวอย่าง Code Controller_show_airflight.php :

<?php

namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;   
use Illuminate\Http\Request;
use App\Airflight;     //มีการ import Model Airflight เข้ามาทำงาน
use App\Airport;       //มีการ import Model Airport เข้ามาทำงาน
use App\Airline;       //มีการ import Model Airline เข้ามาทำงาน 

class Controller_show_airflight extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
     public function index()
    {
        
       

        return view('showAirflight')->with('flight',Airflight::paginate(8)) //ทำการส่งค่า flight ไป , เพื่อทำการแสดงข้อมูลในตราง ....
                                                                            //... โดยมีการเชื่อมต่อกับฐานข้อมูลใน Model Airflight ....
                                                                            //.... ไปดึงข้อมูลจากตราง airflights เข้ามา 

        ->with('airport',Airport::all())                                    //มีการส่งค่า airport ไป , เพราะมีการเชื่อมความสัมพันธ์ข้อมูลอยู่
        ->with('airline',Airline::all())
        ->with('flight_path',Airflight::all())
        ->with('flight_1')                                                 //ทำการส่งค่า flight_1 ไป , โดยไม่มีการเชื่อมต่อกับฐานข้อมูล
        ;
    }

    

    
     public function search(Request $request)
    {



          $name_airport = $request->name_airport;  //รับค่า request name_airport เข้ามาจาก Form showAirflight.blade.php
          $name_airline = $request->name_airline; 
          $path = $request->path;
          $flight_1 = $request->all();           //มีการรับ request all() เพื่อต้องรับค่าข้อมูลแบบ array เข้ามา , เก็บไว้ในตัวแปร $flight_1
      
         
        
       
        //print_r($flight);

        
        return view("showAirflight" )
        ->with('flight',Airflight::where('id_airport' , '=' , "{$name_airport}")  //คืนค่า 'flight' กลับไปที่หน้า showAirflight.blade.php .... 
                                                                        //.... , แล้วทำการ where ในตัวฐานข้อมูล ...
                                                                        //... ว่า $name_airport มันตรงกันกับ id_airport ไหม
        ->orWhere('id_airline' , '=' , "{$name_airline}")
        ->orWhere('path' , '=' , "{$path}")
        ->paginate(5))
        
        ->with('flight_1', $flight_1)               //มีการส่ง flight_1 จาก Form ไป เพื่อเอาไว้ทำการเปรีบบเทียบข้อมูลใน selection ตรงกันไหม ....
                                                    //.... ถ้าตรงกัน ก็ให้ทำการ show ข้อมูลค้างไว้
        ->with('airport',Airport::all())
        ->with('airline',Airline::all())
        ->with('flight_path',Airflight::all())
        
        ;                                               

        
        

       
    }

 
  
}

 

ผลลัพธ์ที่ได้

selection ข้อมูล เพื่อทำการค้นหาข้อมูล
เมื่อทำการ select ข้อมูล สำหรับค้นหา
ส่ง id ผ่าน URL ไป
มีการส่ง id ผ่าน URl ไป , เพื่อตรวจสอบว่าตรงกับ id ของตารางไหม
ก็จะแสดงข้อมูลในส่วนของที่เราค้นหาเอาไว้

 

บทสรุปผล : การค้นหาข้อมูล ListBox เป็นการ select ข้อมูลจาก Listbox โดยมีการดึงจากฐานข้อมูลมา , เพื่อทำการแสดงข้อมูลนั้นมาในส่วนที่เราต้องการจะค้นหา , และมีการให้โชว์ข้อมูลที่ค้างไว้ตรง Listbox นั้นมาแสดงผลด้วย , ข้อมูลใน listbox ต้องไม่มีการ show ข้อมูลซ้ำ , นั้นคือวิธีการสร้าง listbox ที่ดีสุด

ช่องทางการศึกษา Laravel Framework เพิ่มเติม สามารถศึกษาได้จากบทเรียนนี้ :

แหล่งรวมกระทู้บทเรียนของ Laravel Framework

 

แหล่งอ้างอิงข้อมูล

Laravel dependent dropdown tutorial with example [ออนไลน์].เข้าถึงได้จาก https://investmentnovel.com/laravel-dependent-dropdown-tutorial-with-example/

Laravel Dropdown from database [ออนไลน์].เข้าถึงได้จาก https://www.xspdf.com/resolution/53009561.html

Ajax-dynamic dependent dropdown in laravel[ออนไลน์].เข้าถึงได้จาก https://www.webslesson.info/2018/03/ajax-dynamic-dependent-dropdown-in-laravel.html

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ภาษี หัก ณ ที่จ่าย บน ERP
โดย milk2533 ส 28 พ.ย. 2020 4:17 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
4
ส 28 พ.ย. 2020 4:17 pm โดย milk2533
ประโยชน์ของการใช้ปุ่ม Sendmail บน ERP
โดย milk2533 ส 28 พ.ย. 2020 1:40 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
4
ส 28 พ.ย. 2020 1:40 pm โดย milk2533
Contracts ในระบบ ERP คือ อะไร
โดย milk2533 ส 28 พ.ย. 2020 11:40 am บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
4
ส 28 พ.ย. 2020 11:40 am โดย milk2533
เขียน PHP กับ Array แบบนี้ ระวัง Error นะ
โดย mindphp ส 28 พ.ย. 2020 2:31 am บอร์ด Programming - PHP
0
9
ส 28 พ.ย. 2020 2:31 am โดย mindphp
โปรแกรม ERP แตกต่างจาก โปรแกรมบัญชีอย่างไร
โดย milk2533 ศ 27 พ.ย. 2020 3:05 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
19
ศ 27 พ.ย. 2020 3:05 pm โดย milk2533
ประโยชน์ ของ ERP
โดย milk2533 ศ 27 พ.ย. 2020 12:59 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
14
ศ 27 พ.ย. 2020 12:59 pm โดย milk2533
เรื่องของเคล็ดลับเก็บเงินหลักแสนสำหรับคนเรา สำคัญอย่างไร
โดย medalezga ศ 27 พ.ย. 2020 12:03 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
14
ศ 27 พ.ย. 2020 12:03 pm โดย medalezga
เครื่องตรวจนับสินค้า (EOB)
โดย milk2533 ศ 27 พ.ย. 2020 11:26 am บอร์ด IOT - Internet of things
0
23
ศ 27 พ.ย. 2020 11:26 am โดย milk2533