การอ่านข้อมูลจากตารางในฐานข้อมูล MySQL มาแสดง
ก่อนที่จะทำอะไรต่อไป เราต้องมาเตรียมฐานข้อมูลกันก่อนครับ ...
ให้ท่านสร้างฐานข้อมูลชื่อ school ใน MySQL ( อาจจะสร้างโดยการใช้ phpMyAdmin หรือจะสร้างผ่าน Command Line ก็ได้ครับ )
จากนั้นให้ท่านสร้างตารางชื่อ student ลงในฐานข้อมูล school ที่สร้างเมื่อตะกี้ โดยให้มี 2 ฟิลด์ ได้แก่
ชื่อฟิลด์
|
ประเภท
|
ขนาด
|
ความหมาย
|
stdid | varchar | 7 | รหัสนักศึกษา |
stdname | varchar | 50 | ชื่อ-สกุลนักศึกษา |
จากนั้นให้ท่านใส่ข้อมูลลงไปซัก 4 - 5 คน (เรคอร์ด) เนื่องจากว่าในบทนี้เราจะยังไม่ได้ว่ากันเรื่องการเขียน PHP ในการเพิ่มข้อมูลครับ ... ใจเย็น ๆ ทีละขั้น นะครับ
เสร็จแล้วก็เริ่มสร้างเอกสาร PHP เพื่อดึงข้อมูลมาแสดงกันเลยครับ ดู Code กันเลยครับ ...
<html>
<head>
<title> การอ่านข้อมูลจาก MySQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
</head>
<body> <?php //------------ส่วนการเปิด Connection ในการติดต่อกับ MySQL ---------------- $hostname = "localhost"; $username = "<ใส่ Username ของ MySQL>"; $password = "<ใส่รหัสผ่าน>"; $dbname = "school";$conn = mysql_connect( $hostname, $username, $password );
if ( ! $conn )
die ( "ไม่สามารถติดต่อกับ MySQL ได้" ); //----------จบ ส่วนการเปิด Connection ในการติดต่อกับ MySQL ---------------
//----------ส่วนการเลือกฐานข้อมูล school -------------------------------------- mysql_select_db ( $dbname, $conn )
or die ( "ไม่สามารถเลือกฐานข้อมูล school ได้" ); //----------จบส่วนการเลือกฐานข้อมูล school -----------------------------------
$sqltxt = "SELECT * FROM student";$result = mysql_query ( $sqltxt, $conn );
while ( $rs = mysql_fetch_array ( $result ) )
{
echo "$rs[stdid] - $rs[stdname]<br>";
}//----------ส่วนการปิด Connection ในการติดต่อกับ MySQL -------------------- mysql_close ( $conn ); //----------จบส่วนการปิด Connection ในการติดต่อกับ MySQL------------------ ?> </body>
</html>
Code นั้นก็จะคล้าย ๆ กับบทที่แล้วครับ แต่จะเพิ่มตรงกลางมา ซึ่งนั่นก็คือส่วนที่ใช้ในการอ่านข้อมูลจากตาราง student มาแสดงครับ ... ผมจะขออธิบายเฉพาะส่วนนี้นะครับ
เริ่มจากการระบุ Code SQL ที่ใช้ในการเลือกข้อมูลลงในตัวแปรชื่อ sqltxt
จากนั้นเราจะใช้ฟังก์ชัน mysql_query() ในการดึงข้อมูลทั้งหมดมาเก็บไว้ในตัวแปรชื่อ result
จากนั้นเพื่อทำให้เราสามารถเลือกเอาข้อมูลในแต่ละฟิลด์ออกมาใช้แบบง่าย ๆ เราจึงนำข้อมูลทั้งหมดในตัวแปร result มาแตกออกในรูปแบบของ Array โดยใช้ฟังก์ชั่น mysql_fetch_array() ซึ่งเราจะใช้ Loop While เข้ามาช่วยเพื่อให้ทำการวนรอบจนหมดข้อมูล
ภายใน Loop While นั้น เราจะสามารถใช้ชื่อฟิลด์เป็นตัว Index ได้เลยครับ โดยผ่านตัวแปรชื่อ rs ที่ทำการรับค่าการแตกข้อมูล
ลำดับขั้นตอนดี ๆ นะครับ เพราะมันจะส่งค่าต่อ ๆ กันมาเรื่อย ๆ ... ซึ่งแบบนี้เป็นการแสดงค่าแบบง่าย ๆ ครับ ... จริง ๆ แล้วเราสามารถที่จะทำการแสดงค่าลงในรูปแบบของตารางได้ เพื่อความสวยงาม ลองมาทำดูครับ
<html>
<head>
<title>การอ่านข้อมูลจาก MySQL ลงตาราง</title>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
</head>
<body>
<table width="500" border="1" cellpadding="2" cellspacing="0" bordercolor="#0066FF">
<tr bgcolor="#0066FF">
<td><div align="center"><font color="#FFFFFF" face="Tahoma, MS Sans Serif"><strong>รหัสนักศึกษา</strong></font></div></td>
<td><div align="center"><font color="#FFFFFF" face="Tahoma, MS Sans Serif"><strong>ชื่อ
- สกุล</strong></font></div></td>
</tr>
<?php
$hostname = "localhost"; $username = "<ใส่ Username ของ MySQL>"; $password = "<ใส่รหัสผ่าน>"; $dbname = "school";$conn = mysql_connect( $hostname, $username, $password );
if ( ! $conn )
die ( "ไม่สามารถติดต่อกับ MySQL ได้" );
mysql_select_db ( $dbname, $conn )
or die ( "ไม่สามารถเลือกฐานข้อมูล school ได้" );
$sqltxt = "SELECT * FROM student";$result = mysql_query ( $sqltxt, $conn );
while ( $rs = mysql_fetch_array ( $result ) )
{ ?> <tr>
<td><font size="2" face="Tahoma, MS Sans Serif"><?php echo $rs["stdid"] ?></font></td>
<td><font size="2" face="Tahoma, MS Sans Serif"><?php echo $rs["stdname"] ?></font></td>
</tr>
<?php
} mysql_close ( $conn ); ?> </table>
</body>
</html>
จะเห็นว่าเราสามารถแทรก Code ของ PHP ลงใน HTML ได้ทันทีครับ คือแทนที่จะเป็นตัวอักษรธรรมดา ก็เปลี่ยนเป็น Code ของ PHP ที่ระบุชื่อฟิลด์ ก็เท่านั้นเองครับ ... ซึ่งเราจะทำการแทรกลงก่อน <TR> เพื่อทำให้ Loop While ของเราสร้างแถวของตารางใหม่มาให้ด้วยครับ ... ลองแกะ Code ดูนะครับ ... บอกแล้วว่าใจเย็น ๆ
ให้ข้อสังเกตุนิดนึงครับ สำหรับการแสดงผลของทั้งสองตัวอย่าง
ตัวอย่างแรกจะใช้ $rs[stdid]
ตัวอย่างที่ 2 จะใช้ $rs["stdid"]
ต่างกันตรงไหนน้อ ??? ... ทำไมอันแรกไม่มีเครื่องหมายคำพูด อีกอันนึงมี
เหตุผลก็คือ แบบแรก เราแสดงอยู่ในเครื่องหมายคำพูดอยู่แล้วไงครับ เป็นเครื่องหมายคำพูดใหญ่ ปิดหัวปิดท้ายอยู่แล้ว ดังนั้นเราจะต้องไม่ใส่อีก >>> echo "$rs[stdid] - $rs[stdname]<br>";
ส่วนแบบที่สองไม่มีเครื่องหมายคำพูดใหญ่ปิดหัวท้าย ดังนั้นข้างในเราจึงจะต้องใส่ด้วยครับ >>> echo $rs["stdid"]
แล้วสุดท้าย ก็อย่าลืมปิดการติดต่อฐานข้อมูลซะด้วยละครับ ...
0 ความคิดเห็น :
แสดงความคิดเห็น