Hướng dẫn view php

  • Trang chủ
  • Hướng dẫn học
  • Học PHP
  • PHP xem dữ liệu MySQL

PHP xem dữ liệu MySQL

  • Khi đã có dữ liệu thì việc kế tiếp phải xem coi dữ liệu đó hiển thị như thế nào, hoặc dữ liệu hiển thị cho người dùng thấy.
  • Các bước thực hiện:

    • Kết nối database và table.
    • Xử lý dữ liệu.
    • Đóng database.

Cấu trúc view:

Chỉ cần một câu truy vấn SELECT, sau đó dùng vòng lặp while truy xuất các phần tử trong table.

  • tên_cột: là tên các cột, tên cột cách nhau bởi dấu phẩy, có thể sử dụng ký tự * để đại diện cho tất cả các cột.
  • tên_table: là tên bảng được chọn xem dữ liệu.

Xuất dữ liệu ra trình duyệt

Kiểu hướng đối tượng

// Khai báo username
$password = "123456";      // Khai báo password
$server   = "localhost";   // Khai báo server
$dbname   = "tintuc";      // Khai báo database

// Kết nối database tintuc
$connect = new mysqli($server, $username, $password, $dbname);

//Nếu kết nối bị lỗi thì xuất báo lỗi và thoát.
if ($connect->connect_error) {
    die("Không kết nối :" . $conn->connect_error);
    exit();
}

//Code xử lý, insert dữ liệu vào table
$sql     = "SELECT * FROM tin_xahoi";
$ket_qua = $connect->query($sql);

//Nếu kết quả kết nối không được thì xuất báo lỗi và thoát
if (!$ket_qua) {
    die("Không thể thực hiện câu lệnh SQL: " . $connect->connect_error);
    exit();
}

//Dùng vòng lặp while truy xuất các phần tử trong table
while ($row = $ket_qua->fetch_array(MYSQLI_ASSOC)) {
    echo "

ID: " . $row['id'] . "

"; echo "

Tiêu đề: " . $row['title'] . "

"; echo "

Ngày: " . $row['date'] . "

"; echo "

Mô tả: " . $row['description'] . "

"; echo "

Nội dung: " . $row['content'] . "

"; echo "
"; } //Đóng kết nối database tintuc $connect->close(); ?>

ID: 1

Tiêu đề: Học không bao giờ là trễ

Ngày: 2016-10-24

Mô tả: Bài viết sau đây sẽ cho bạn biết rõ lý do tại sao học không bao giờ là trễ.

Nội dung: Đây là nội dung của bài viết "Học không bao giờ là trễ"


ID: 2

Tiêu đề: Tin hot

Ngày: 2016-10-24

Mô tả: Đây là mô tả cho tin hot

Nội dung: Đây là nội dung của tin hot


Câu truy vấn SELECT * FROM tin_xahoi, với dấu * đại diện cho tất cả cột có trong table, nếu cần lấy vài giá trị thì ta gọi ứng với từng giá trị đó, mỗi giá trị cách nhau bởi dấu phẩy, vd: SELECT title, content FROM tin_xahoi

Kiểu thủ tục

// Khai báo username
$password = "123456";      // Khai báo password
$server   = "localhost";   // Khai báo server
$dbname   = "tintuc";      // Khai báo database

// Kết nối database tintuc
$connect = mysqli_connect($server, $username, $password, $dbname);

//Nếu kết nối bị lỗi thì xuất báo lỗi và thoát.
if (!$connect) {
    die("Không kết nối :" . mysqli_connect_error());
    exit();
}

//Code xử lý, truy vấn xem dữ liệu
$sql = "SELECT * FROM tin_xahoi";
$ket_qua = mysqli_query($connect,$sql);

if (!$ket_qua) {
    die("Không thể thực hiện câu lệnh SQL: " . mysqli_error($connect));
    exit();
}

//Dùng vòng lặp while truy xuất các phần tử trong table
while ($row = mysqli_fetch_array($ket_qua)) {
    echo "

ID: " . $row['id'] . "

"; echo "

Tiêu đề: " . $row['title'] . "

"; echo "

Ngày: " . $row['date'] . "

"; echo "

Mô tả: " . $row['description'] . "

"; echo "

Nội dung: " . $row['content'] . "

"; echo "
"; } //Đóng database mysqli_close($connect); ?>

ID: 1

Tiêu đề: Học không bao giờ là trễ

Ngày: 2016-10-24

Mô tả: Bài viết sau đây sẽ cho bạn biết rõ lý do tại sao học không bao giờ là trễ.

Nội dung: Đây là nội dung của bài viết "Học không bao giờ là trễ"


ID: 2

Tiêu đề: Tin hot

Ngày: 2016-10-24

Mô tả: Đây là mô tả cho tin hot

Nội dung: Đây là nội dung của tin hot


Download file ví dụ

Trong file download đã có sẵn file tintuc.sql, file này là file dữ liệu mẫu, sau khi đã tạo database chúng ta có thể đưa dữ liệu từ file tintuc.sql bằng thao tác import có trong phpMyAdmin.

  • Trang chủ
  • Hướng dẫn học
  • Laravel
  • View database

View database

  • Bài học trước chúng ta đã biết cách tạo một trang nhập dữ liệu như thế nào rồi, bài này sẽ giúp chúng ta xem (view) dữ liệu.
  • Có 2 dạng xem dữ liệu:

    • Xem dạng danh sách tất cả dữ liệu - trang view list.
    • Xem chi tiết một dữ liệu nào đó - trang detail (đề cập ở bài sau).
  • Giả sử sau khi nhập dữ liệu, ta được bảng dữ liệu như sau (bảng này được tạo bằng Seeder):

Hướng dẫn view php

Chuẩn bị

  • Để tạo được trang hiển thị danh sách dữ liệu ta làm các thao tác sau:

    • Tạo view cho trang danh sách dữ liệu (thường là trang index) news.blade.php, và đặt trong thư mục /resources/views/admin/
    • Tạo một controller điều khiển các hoạt động của trang news (đã tạo ở bài insert database), bao gồm: view, insert, update, delete.
    • Route điều khiển hiển thị của trang danh sách dữ liệu news.blade.php.

Các file xử lý sẽ thuộc cấu trúc sau:

myproject

  • app

    • Http

      • Controllers

        • Admin

          • Hướng dẫn view php
            AdminNewsController.php
  • resources

    • views

      • admin

        • Hướng dẫn view php
          news.blade.php
  • routes

    • Hướng dẫn view php
      web.php

Tạo trang insert dữ liệu /resources/views/admin/news.blade.php

Vào thư mục /resources/views/admin/ tạo file PHP news.blade.php bình thường với nội dung sau:

ID Title Email Tools
Edit | Delete

Thêm nội dung Controller

Thêm nội dung cho function index() của Controller AdminNewsController để gọi trang view xem danh sách:

/**
     *  Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('/admin/news');
    }

  • Nội dung trên chỉ đơn giản là gọi trang view /admin/news

Thêm nội dung Route

Ta thêm vào Route /routes/web.php nội dung sau:

Route::get('/admin/news', 'Admin\AdminNewsController@index');

  • /admin/news: đường dẫn tới trang xem danh sách dữ liệu.
  • Admin\AdminNewsController: thư mục Admin chứa Controller AdminNewsController.
  • index: Đây là function index() trong Controller AdminNewsController viết bên trên.

Hiển thị trang view xem danh sách dữ liệu:

Gõ đường dẫn http://localhost:82/admin/news lên trình duyệt, ta sẽ xem được nội dung sau:

Hướng dẫn view php

Tiến hành lấy dữ liệu và hiển thị ra view

  • Để lấy dữ liệu từ database, ta cần xử lý từ Controller.
  • Viết lại function index từ Controller /app/Http/Controllers/Admin/AdminNewsController.php:

use Illuminate\Support\Facades\DB;
    /**
     *  Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $news = DB::table('news')->select('*');
        $news = $news->get();

        $pageName = 'Tên Trang - News';

        return view('/admin/news', compact('news', 'pageName'));
    }

  • use Illuminate\Support\Facades\DB;: Khai báo DB Facades để xử lý dữ liệu.
  • $news = DB::table('news')->select('*');: truy vấn dữ liệu từ bảng news trong database.
  • $news = $news->get();: lấy dữ liệu và gán cho biến $news.
  • $pageName = 'Tên Trang: News';: tạo thêm cho tên trang thôi, không quan trọng trong bài này.
  • return view('/admin/news', compact('news', 'pageName'));: lấy dữ liệu kết hợp của $news và $pageName, trả kết quả về view /admin/news

Hiển thị dữ liệu ra trang view

Dữ liệu đã lấy rồi, việc còn lại là hiển thị kết quả lấy được ra trang danh sách dữ liệu, ta viết lại trang /resources/views/admin/news.blade.php như sau:

{{ $pageName }}

@foreach($news as $row)@endforeach
ID Title Email Tools
{{$row->id}} {{$row->title}} {{$row->email}} Edit | Delete

Tới đây thì xong rồi, gõ đường dẫn http://localhost:82/admin/news lên trình duyệt, ta sẽ xem được kết quả:

Hướng dẫn view php