1. 程式人生 > >PHP+MySQL+Ajax實現前端頁面展示資料庫的資料

PHP+MySQL+Ajax實現前端頁面展示資料庫的資料

昨天發現一款資料庫管理軟體:Navicat for MySQL,一款強大的 MySQL 資料庫管理和開發工具,這款軟體使用了極好的圖形使用者介面(GUI),可以用一種安全和更為容易的方式快速和容易地新建資料庫、新建表等。前端學習過程中一直對後臺如何從資料庫讀取資料,以及後臺提供給前端介面等問題比較感興趣,藉此機會,嘗試了一下新建資料庫和表,用PHP從建好的資料庫中讀取資料,並在前端用Ajax將資料展示出來等,做一個記錄,為後續學習鋪路。

1、使用Navicat for MySQL建立資料庫和表

Navicat for MySQL使用起來十分簡單,不用像PHP建立資料庫和表的時候需要寫程式碼來完成,具體操作此處不再詳細介紹,可以參考以下網址進行建立:

建立好的資料庫和表如下圖所示:
這裡寫圖片描述

2、使用PHP從 MySQL 資料庫讀取資料

以下例項中我們從student資料庫的studentinfo表讀取了studentID,studentName,class,department和 teleNumber列的資料並顯示在頁面上:

<?php
//header("Content-type=text/html;charset=utf-8");
//header('Content-type:text/json');
$servername = "localhost";
$username = "root";
$password = "";
$dbname
= "student"; // 建立連線 $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("連線失敗: " . $conn->connect_error); } mysqli_query($conn, 'set names utf8'); $sql = "SELECT studentID, studentName, class, department,teleNumber FROM studentinfo"
; $result = $conn->query($sql); if ($result->num_rows > 0) { // 輸出資料 while($row = $result->fetch_assoc()) { echo json_encode($row,JSON_UNESCAPED_UNICODE).' '; } } else { echo "0 結果"; } $conn->close(); ?>

以上程式碼解析如下:
首先,設定了 SQL 語句從 MyGuests資料表中讀取 id, firstname 和 lastname 三個欄位。之後我們使用改 SQL 語句從資料庫中取出結果集並賦給複製給變數 $result。
函式 num_rows() 判斷返回的資料。
如果返回的是多條資料,函式 fetch_assoc() 將結合集放入到關聯陣列並迴圈輸出。 while() 迴圈出結果集,並輸出 id, firstname 和 lastname 三個欄位值。
過程中遇到的問題:
(1)PHP從資料庫讀取的資料中文顯示的是”?”,解決方法:
mysqli_query($conn, 'set names utf8')後中文變為Unicode的編碼
(2)Unicode的編碼改成中文的方法:
json_encode($row,JSON_UNESCAPED_UNICODE).' ';

3、使用Ajax將資料展示在前端頁面

程式碼如下:

<!DOCTYPE html>
<html ng-app = 'test'>

<head>
    <meta charset="UTF-8">
    <meta http-equiv="Content-type=text/html;charset=utf-8"/>
    <!-- jQuery -->
    <script type="text/javascript" src="http://code.changer.hk/jquery/1.11.2/jquery.min.js"></script>
     <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <style type="text/css">
        .table{
            width: 1000px;
            text-align: center;
        }
    </style>
    <title>學生資訊管理</title>
</head>

<body ng-controller = 'main'>
    <div class="">
        <table class="table table-bordered table-striped">
            <thead>
                <tr>
                    <td>學號</td>
                    <td>姓名</td>
                    <td>班級</td>
                    <td>學院</td>
                    <td>電話</td>
                </tr>
            </thead>
            <tbody id="tbody"></tbody>
        </table>
    </div>
</body>
<script type="text/javascript">

$.ajax({
    type: 'POST',
    url: 'studentInfo.php',
    data:{
    },
    success: function (data) {
        //console.log(data);
        var a = data.split(' ');
        //console.log(a);
        var trStr = '';//動態拼接table
        for (var i = 0; i < a.length-1; i++) {
            trStr += '<tr class="example">';
            trStr += '<td width="15%">' + JSON.parse(a[i]).studentID + '</td>';
            trStr += '<td width="15%">' + JSON.parse(a[i]).studentName + '</td>';
            trStr += '<td width="15%">' + JSON.parse(a[i]).class + '</td>';
            trStr += '<td>' + JSON.parse(a[i]).department + '</td>';
            trStr += '<td>' + JSON.parse(a[i]).teleNumber + '</td>';
            trStr += '</tr>';  
        } 
        $("#tbody").html(trStr);
    }
});
</script>
</html>

最終實現效果:
這裡寫圖片描述

以上內容僅僅作為前端、後臺和資料庫進行連線的演示,談不上前後臺數據互動,還有很多內容需要擴充套件,比如資料的增刪改等操作,後續空閒之餘可以自娛自樂一下。