Wednesday, September 26, 2012

PHP กับการออกแบบและวางโครงสร้างหน้า Webpage


PHP กับการออกแบบและวางโครงสร้างหน้า Webpage

ปัญหาสำหรับนักโปรแกรมเมอร์มือใหม่ ๆ ที่จะเริ่มสร้าง Project ขึ้นมาซะ 1 โปรเจค ก็คือการออกแบบและวางโครงสร้างของหน้าเว็บไซต์ เพราะถ้ายังขาดความรู้และการออกแบบที่ดี เช่นการวางโครงสร้างของ header , menu หรือ footer ไม่ได้มีการแยกไว้อย่างเป็นสัดส่วน โดยมีการสร้างเนื้อหาเหล่านั้นไว้ในทุก ๆ ไฟล์ โดยไม่มีการแยกเป็น include ไฟล์เอาไว้ เมื่อ Project เริ่มมีการพัฒนาได้ในระดับหนึ่ง หากต้องการแก้ไขค่าเหล่านี้ ซึ่งเป็นข้อมูลที่ซ้ำ ๆ กันในทุกหน้า Web Page จเห็นว่าจะต้องตามแก้ไขในทุก ๆ ไฟล์ ซึ่งยากต่อการจัดการและการทำงานที่ซ้ำซ้อนเป็นอย่างมาก


โครงสร้างของเว็บไซต์ทั่ว ๆ ไปที่ได้รับความนิยมจะประกอบด้วย 4 ส่วนหลัก ๆ คือ

- Header สำหรับ Logo หรือ Banner ของเว็บไซต์
- Menu สำหรับ Menu ต่าง ๆ
- Footer สำหรับใส่ข้อความใน Footer
- Container คือส่วนของเนื้อหา ที่จะเปลี่ยนเมื่อมีการคลิก Link ต่าง ๆ


PHP and Web Site Structure

ดังนั้นจากรูปจะเห็นว่าเว็บไซต์มีการแบ่งโครงสร้างไว้อย่างชัดเชน ดังนั้น เราสามารถแยกส่วนของ

- Header
- Menu
- Footer


โดยแยก 3 ส่วนนี้ไว้ในไฟล์ .php ต่าง ๆ แล้วทำการ include เข้ามาในไฟล์ โดยตั้งชื่อไฟล์เป็น header.php , menu.php และ footer.php

ในส่วนของ Container เหตุผลที่ไม่แยกเป็นไฟล์นั้น เพราะในส่วนนี้เราจะใส่ Code ของ php ที่เป็นเงื่อนไขในการดึง page ต่าง ๆ มาแสดง

เมื่อแยกไฟล์เหล่านี้ได้แล้วเราสามารถนำมา include เข้าไปในส่วนต่าง ๆ ของโครงสร้างของหน้าเว็บ

การ include โครงสร้างไน้าเว็บ

PHP and Web Site Structure


สิ่งที่ได้เมื่อมีการ include โครงสร้างเข้ามาในหน้า webpage

PHP and Web Site Structure


ซึ่งตอนนี้เราได้ออกแบบเสร็จไป 3 ส่วนแล้วคือ Header , Menu และ Footer ซึ่งยังเหลือในส่วนของ Container ที่ใช้สำหรับการดึงค่าต่าง ๆ ของแต่ล่ะหน้าเว็บไซต์มาแสดงผล

เพิ่มเติม
อันเนื่องจากการออกแบบโครงสร้างหน้าเว็บด้วยวิธีนี้ การทำงานทั้งหมดของหน้าเว็บจะอยู่ที่ไฟล์ index.php ซึ่งเป็นหน้าหลักของเว็บไซต์ และมีส่วนเดียวของเว็บไวต์ที่เปลี่ยนแปลงคือ Container ด้วยวิธีนี้เองในหน้า Menu ของเว็บไวต์ เราจะทำการส่งค่า Parameter เพื่อดึงเนื้อหาส่วนนั้น ๆ มาแสดงผลในหน้าเว็บ

01.<!-- Menu -->
02.<table width="150"  border="0">
03.<tr>
04.<td><div align="center"><a href="index.php?page=home">Home</a></div></td>
05.</tr>
06.<tr>
07.<td><div align="center"><a href="index.php?page=service">Service</a></div></td>
08.</tr>
09.<tr>
10.<td><div align="center"><a href="index.php?page=product">Product</a></div></td>
11.</tr>
12.<tr>
13.<td><div align="center"><a href="index.php?page=aboutus">About Us</a></div></td>
14.</tr>
15.<tr>
16.<td><div align="center"><a href="index.php?page=contactus">Contact Us</a></div></td>
17.</tr>
18.</table>


จะเห็นว่าในไฟล์ menu.php มีการส่งตัวแปร index.php?page=service เมื่อเราอ่านค่าด้วย $_GET["page"] ก็จะได้ค่าว่า service ซึ่งในส่วนของ Container สามารถนำค่านี้เพื่อไปกำหนดเงื่อนไขการแสดงได้


PHP and Web Site Structure

รูปการ include หน้า Webpage เข้ามานส่วนของ Container เมื่อมีการคลิกที่เมนู service โดยเรียกไฟล์ชื่อ page_service.php

01.<!-- Container -->
02.<?
03.switch ($_GET["page"]) {
04.case "home":
05.include("page_home.php");
06.break;
07.case "service":
08.include("page_service.php");
09.break;
10.case "product":
11.include("page_product.php");
12.break;
13.case "aboutus":
14.include("page_aboutus.php");
15.break;
16.case "contactus":
17.include("page_contactus.php");
18.break;
19.default:
20.include("page_home.php");
21.}
22.?>


กรณีที่มีหลาย Web page ก็ใช้ function switch ในการกหนดเงื่อนและดึงเนื้อหาที่ต้องการ

และเมื่อนำไปใช้งานจริง URL ที่ได้จะได้เป็น
http://www.thaicreate.com/index.php?page=service


ในกรณีที่ไฟล์ default เป็น index.php แล้ว สามารถลบคำว่า index.php ทิ้งได้เลย
โดยแค่ใส่ Link<a href="?page=service">Service</a> ไม่ต้องมี index.php
http://www.thaicreate.com/?page=service



Code ทั้งหมด

index.php
01.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
03.<html>
04.<head>
05.<title>ThaiCreate.Com</title>
06.<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
07.</head>
08. 
09.<body>
10.<table width="100%" border="1">
11.<tr>
12.<td colspan="2"><div align="center">
13. 
14.<!-- Header -->
15.<? include("header.php"); ?>
16. 
17.</div></td>
18.</tr>
19.<tr>
20.<td width="24%"><div align="center">
21. 
22.<!-- Menu -->
23.<? include("menu.php"); ?>
24. 
25.</div></td>
26.<td width="76%">
27. 
28.<!-- Container -->
29.<?
30.switch ($_GET["page"]) {
31.case "home":
32.echo "Home";
33.include("page_home.php");
34.break;
35.case "service":
36.echo "Home -> Service";
37.include("page_service.php");
38.break;
39.case "product":
40.echo "Home -> Product";
41.include("page_product.php");
42.break;
43.case "aboutus":
44.echo "Home -> About Us";
45.include("page_aboutus.php");
46.break;
47.case "contactus":
48.echo "Home -> Contact Us";
49.include("page_contactus.php");
50.break;
51.default:
52.echo "Home";
53.include("page_home.php");
54.}
55.?>
56. 
57.</td>
58.</tr>
59.<tr>
60.<td colspan="2"><div align="center">
61. 
62.<!-- Footer -->
63.<? include("footer.php"); ?>
64. 
65.</div></td>
66.</tr>
67.</table>
68.</body>
69.</html>


menu.php
01.<table width="150"  border="0">
02.<tr>
03.<td><div align="center"><a href="index.php?page=home">Home</a></div></td>
04.</tr>
05.<tr>
06.<td><div align="center"><a href="index.php?page=service">Service</a></div></td>
07.</tr>
08.<tr>
09.<td><div align="center"><a href="index.php?page=product">Product</a></div></td>
10.</tr>
11.<tr>
12.<td><div align="center"><a href="index.php?page=aboutus">About Us</a></div></td>
13.</tr>
14.<tr>
15.<td><div align="center"><a href="index.php?page=contactus">Contact Us</a></div></td>
16.</tr>
17.</table>


header.php
1.<table width="100%"  border="0">
2.<tr>
3.<td width="27%"><div align="center"><strong>Your Logo</strong></div></td>
4.<td width="73%"><img src="468x60.gif" width="468" height="60"></td>
5.</tr>
6.</table>


footer.php
1.<table width="100%"  border="0">
2.<tr>
3.<td><div align="center"><strong>CopyRight 2011</strong></div></td>
4.</tr>
5.</table>


page_home.php
1.<table width="569" height="255"  border="0">
2.<tr>
3.<td bgcolor="#FFCCCC"><div align="center"><h1>Home</h1>
4.</div></td>
5.</tr>
6.</table>


page_service.php
1.<table width="569" height="255"  border="0">
2.<tr>
3.<td bgcolor="#00CC66"><div align="center"><h1>Service</h1>
4.</div></td>
5.</tr>
6.</table>


page_product.php
1.<table width="569" height="255"  border="0">
2.<tr>
3.<td bgcolor="#CCCCFF"><div align="center"><h1>Product</h1>
4.</div></td>
5.</tr>
6.</table>


page_aboutus.php
1.<table width="569" height="255"  border="0">
2.<tr>
3.<td bgcolor="#99CC33"><div align="center"><h1>About Us</h1>
4.</div></td>
5.</tr>
6.</table>


page_contactus.php
1.<table width="569" height="255"  border="0">
2.<tr>
3.<td bgcolor="#33CCFF"><div align="center"><h1>Contact Us</h1>
4.</div></td>
5.</tr>
6.</table>



Screenshot

PHP and Web Site Structure


PHP and Web Site Structure


PHP and Web Site Structure


PHP and Web Site Structure

No comments:

Post a Comment