2015年3月31日

[教學] PHP & MySQL 學習筆記 第八堂(資料庫建置:phpMyAdmin資料庫建置並呈現於網頁)

非常抱歉,關於部落格內 PHP 的部分目前已經停止維護,因本人已經很久沒有寫 PHP ,且文章中所使用的 PHP 版本偏舊,希望有心學習 PHP 的朋友們,可以參考 Codecademy 的課程,或近一步嘗試 Laravel 這個 PHP 框架(可透過 laracasts 學習),若有找不到錯的學習資源也歡迎在留言串分享,方便有需要的人能夠有更多學習的管道!
在這一堂課中,我們會開始接觸到資料庫,並且學習透過語法,把需要的資料以網頁的方式加以呈現。

結果可以看這裡

本次會學習到的函數共包含:

mysql_connect("主機名稱","帳號","密碼"):連接伺服器
mysql_select_db("資料庫名稱"):選擇欲讀取的資料庫名稱
mysql_query("set names utf8"):將資料設為utf8格式(才能讀取中文)
mysql_query("select * from 資料庫名稱"):從某資料庫中讀取所有的(*)資料表
mysql_num_rows( ):回傳我們的資料有幾個列
mysql_fecth_rows( ):讀取該資料表中列的資料,回傳的是一列資料。


建立資料庫

因為之前安裝過虛擬伺服器的關係,因此我們只要在我們的瀏覽列輸入localhost,就會出現伺服器的首頁

點選phpMyAdmin Database這個選項,接著輸入帳號和密碼,帳號就是root,密碼是之前安裝軟體時輸入的密碼(如果忘記密碼的話,就只能把軟體重灌一次了)

進入管理頁面

這裡我們要開始建立一個新的資料庫,名字取做contact


接著我們要建立資料表,資料表的概念有點像是excel裡面的頁面表(sheet),而一個資料庫就有點像是一個excel檔,這裡我們同樣把資料表的名稱取做contact。
在建立資料表的時候,我們就要決定我們有多少個欄位數目(這就很像做實驗的時候,我們有幾個變項)。

接著就可以依序輸入欄位名稱

欄位型態的部分,選擇適合的型態(這裡就像是在定義變項是屬於數值、名義或類別的感覺),每個型態的意義則透過google很容易就可以查到。


 這裡要注意的是,電話號碼或手機雖然是數字,但因為不會拿來做運算,所以概念上其實算是名義變項。

接著輸入該欄位可容納的長度


點到旁邊的資料表(contact)就可以看到我們剛剛輸入的欄位資料了

點選新增,在值的地方填入,就可以填入資料,這裡我們可以隨便輸入幾筆資料。


點選上方的瀏覽,就可以看到剛剛輸入的資料


在網頁中顯示資料庫的資料

再來我們要練習在網頁中顯示資料庫裡面的資料。

這裡我們會用到三個語法分別是mysql_connectmysql_select_dbmysql_query,並把選取出來資料取叫做變數data


我們利用新的函式mysql_fetech_row(),來擷取data當中的一列資料,並把它命名為變項rs。接著讓我們叫出資料來看資料的樣子


呈現出來的樣子會像這樣:

data其實就是一個陣列,就像一個表格一樣,所以它只會顯示「resource id #3」,表示我們這裡面有三個欄位


當我們用mysql_fetch_row的時候,它會顯示array,表示它是一個陣列。當我們使用rs[0]的時候,表示我們要取得這一列的第一個值(即,陳大明),當我輸入rs[1]的時候,表示我們要取得這一列的第二個值,我們可以透過這樣的方式搭配上回圈,讓表格中呈現資料庫的資料。

我們要先從「設計」中製作一個表格


填入欄位名稱


接著,在切換到程式碼的地方,分別去擷取第一列當中的各個資料


呈現出來的結果就會向這樣子

如果我們想要呈現第二列的資料,只需要在複製一次這短語法就可以了,當它第二次讀到mysql_fetch_row時,就會回傳第二列的資料;當它讀到第三次,就會回傳第三列的資料,以此類推。


結果就呈現成這樣

因此,我們可以用回圈的方式,告訴它我們要執行幾次,如果有三列,我們就讓它到$i<=3就可以了,而更簡單的作法,是直接請他抓我們有幾列,透過mysql_num_rows(),就可以達到


之後你只要資料繼續增加,不需要改程式碼也能辦到。
這段完整的程式碼如下:
<?php
mysql_connect("localhost","root","12345678");//連結伺服器
mysql_select_db("contact");//選擇資料庫
mysql_query("set names utf8");//以utf8讀取資料,讓資料可以讀取中文
$data=mysql_query("select * from contact");//從contact資料庫中選擇所有的資料表
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>資料庫網頁建置</title>
</head>

<body>
<p>

</p>
<table width="700" border="1">
  <tr>
    <td>姓名</td>
    <td>性別</td>
    <td>電話</td>
    <td>手機</td>
    <td>地址</td>
  </tr>
<?php
for($i=1;$i<=mysql_num_rows($data);$i++){
$rs=mysql_fetch_row($data);
?>
  <tr>
    <td><?php echo $rs[0]?></td>
    <td><?php echo $rs[1]?></td>
    <td><?php echo $rs[2]?></td>
    <td><?php echo $rs[3]?></td>
    <td><?php echo $rs[4]?></td>
  </tr>
<?php
}
?>
</table>
<p>&nbsp;</p>
</body>
</html&gt


接下來,我們要練習更複雜的操作,也就是透過搜尋的方式,請電腦幫我篩選出符合資格的資料,為了要達到這個練習,我們要先使用馬老師提供的資料檔

資料匯入的方法如下:



接下來,我們使用member這個資料表做練習。

因為欄位變多了,所以我們table的內容也要增加,同時要把mysql_query的地方改成讀取member這個資料表,程式碼最後會變成這樣:
<?php
mysql_connect("localhost","root","12345678");//連結伺服器
mysql_select_db("contact");//選擇資料庫
mysql_query("set names utf8");//以utf8讀取資料,讓資料可以讀取中文
$data=mysql_query("select * from member");//選擇從member資料表中讀取所有的資料
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>資料庫網頁建置</title>
</head>

<body>
<p>

</p>
<table width="700" border="1">
   <tr>
    <td >編號</td>
    <td >姓名</td>
    <td >性別</td>
    <td >生日</td>
    <td >地址</td>
    <td >城市</td>
    <td >國籍</td>
    <td>郵遞區號</td>
    <td >電話</td>
    <td>備註</td>
  </tr>
  <?php
  for($i=1;$i<=mysql_num_rows($data);$i++){
$rs=mysql_fetch_row($data);
?>
  <tr>
    <td><?php echo $rs[0]?></td>
    <td><?php echo $rs[1]?></td>
    <td><?php echo $rs[2]?></td>
    <td><?php echo $rs[3]?></td>
    <td><?php echo $rs[4]?></td>
    <td><?php echo $rs[5]?></td>
    <td><?php echo $rs[6]?></td>
    <td><?php echo $rs[7]?></td>
    <td><?php echo $rs[8]?></td>
    <td><?php echo $rs[9]?></td>
  </tr>
  
  <?php
}
?>
</table>
<p>&nbsp;</p>
</body>
</html>

成功的話就會讀出很多的資料

結果可以看這裡

結果可以看這裡


以上內容均為本人在馬老師雲端研究室學習所整理之筆記

5 則留言:

  1. 謝謝,辛苦了!獲益良多

    回覆刪除
  2. 謝謝你們的肯定!有機會我再把這些筆記整理一下!

    回覆刪除
  3. 你好 看過你php系列的文章 簡單易懂 謝謝您~ 另外,我想請問如何將php網頁所輸入的資料存入phpmyadmin裏頭?

    回覆刪除
    回覆
    1. 謝謝你的肯定!
      你可以參考這一篇文章(http://pjchender.blogspot.tw/2015/04/php-mysql-13.html),利用insert into就可以將資料寫入資料庫中。

      刪除