ตัวอย่างระบบ WebDirectory พัฒนาด้วย php,mysql แบบไฟล์เดียว


ตัวอย่างระบบ WebDirectory พัฒนาด้วย php,mysql แบบไฟล์เดียว

ห่างหายไปนานกับระบบตัวอย่างนะครับ ไม่ค่อยมีเวลาเท่าไหร่ วันนี้ผมทำมาฝากกันอีกแล้วครับสำหรับระบบในวันนี้เป็นระบบขนาดจิ๋วๆเลยก็ว่า ได้ เพราะเป็นแค่เพียงระบบ Web directory ซึ่งเอาไว้สำหรับจัดเก็บรายชื่อเว็บไซต์ต่างๆที่น่าสนใจครับ จริงๆแล้วเชื่อว่าระบบนี้ไม่ยากเย็นอะไร แต่ที่หยิบยกกันมาเป็นตัวอย่างก็เเพราะว่า ทั้งระบบ ผมเขียนด้วยไฟล์ index.php เพียงไฟล์เดียวครับ

ก่อนอื่นขอเล่าที่มาที่ไปของระบบนี้กันก่อนนะครับว่าไปยังไงมายังไง ผมเป็นคนที่ชอบเค้าเว็บมากๆคนหนึ่ง วันไหนได้ออน internet เป็นต้องสิงสถิตอยู่หน้าคอมแบบไม่ยอมลุกไปไหนเลยทีเดียว ทีนี้เวลาไปเจอเว็บไซต์ไหนที่ถูกใจ ดูแล้วว่าวันหลังคงต้องเข้ามาเยือนอีกแน่ๆ คงจะต้องจัดเก็บเอาไว้เป็น Bookmarks บนช่อง Favorite แต่เล่นไปเล่นมาปรากฏว่า เยอะมากๆจนเต็มไปหมดเลย ก็เลยต้องลองทำระบบนี้ขึ้นมาใช้งานดู

ระบบนี้ก็เกิดขึ้นมาได้ด้วยเหตุผลนี้นี่แหละครับ แต่ปัญหาจะอยู่ตรงที่ ระบบนี้ถูกพัฒนาขึ้นมาเพื่อเป็นตัวอย่างให้ดูในเรื่องของการเขียนระบบด้วย ไฟล์เพียงไฟล์เดียว ดังนั้นผมคงไม่ไปเน้นอะไรมากนัก ผมเอาไว้ใช้เองในเครื่องก็เลย ไม่ได้มีการป้องกัน หรือการรักษาความปลอดภัยของข้อมูลอะไรมากนัก แต่ที่่จริงทำไปทำมาตั้งใจจะใช้กับ intranet ของที่บ้านซะเลย

ตัวรระบบจะไม่มีเรื่องของการ Confirm URL การตรวจสอบรายชื่อเว็บ การสะสมคะแนน Click การ login เข้าสู่ระบบอะไรพวกนั้นนะครับ แต่เชื่อว่าคงพอเป็นตัวอย่างให้สำหรับผู้ที่สนใจจะลองเขียนงานแบบไฟล์เดียวดูได้อย่างแน่นอน

งานนี้เขียนขึ้นมาด้วยภาษา PHP นะครับ แล้วเก็บฐานข้อมูลลงไปใน MySQL อีกที ไม่มีลูกเล่นอะไรมากนัก งาน comment ในไฟล์ไม่มีเพราะเอามาอธิบายกันตรงนี้เลยแล้วกัน

download file ไปเล่นดูครับ

เริ่มจาก

หน้าแรก

หน้าแรก

 

หน้าแรกเริ่มจากด้านบนกันก่อนนะครับ เป็นเมนูหลักของระบบ
ประกอบไปด้วย Home   Search   Category  Site Submit Recommenter ซึ่งแต่ละหน้าจะถูกเรียกผ่านทาง code ภาษา php นะครับ หน้านี้เป็นหน้าแรกผมจะใช้คำแนะนำด้านบนสั้นๆ แล้วเอาเว็บไซต์ 10 เว็บล่าสุด มาแสดงไว้ด้านหน้า ซึ่งมีรายชื่อเว็บ มี url เว็บ มีรายละเอียดเว็บ แล้วด้านล่างก่อน footer ผมก็ได้นับจำนวนเว็บไซต์ทั้งหมดที่มีอยู่ภายในระบบมาวางไว้ด้วย
และในส่วนของ footer ก็ง่ายๆมีแค่วันที่ทำกับ link มาหา social network ของตัวผมเองครับ

ทีนี้มาดูเรื่อง Code กันบ้าง

คำสั้งทั้งหมดจะทำงานได้ภายใต้เงื่อนไข if else นะครับ ผมใช้แบบนี้
if($_SERVER['QUERY_STRING']==”search”)
เรียงลงไปทุกหน้า เช่นจะเปิดหน้า site submit Code ก็จะเป็น
if($_SERVER['QUERY_STRING']==”sitesubmit”)
แบบนี้แหละครับ

ทีนี้ถ้าหลัง indx.php ไม่มี QUERY_STRING ต่อท้ายมาก็จะเป็นนหน้าแรกของระบบครับ

//index
echo “<tr>
<td colspan=’2′ bgcolor=’#ffffff’>
<p style=’font-size:12px; padding-left:10px; padding-top:10px; padding-bottom:2px; padding-right:50px;’>
เว็บไซต์ที่น่าสนใจและมีความรู้ มีสาระทุกวันนี้มีเกิดขึ้นเป็นจำนวนมาก ผมมองว่า หากเรามีการรวบรวมเอาไว้เป็นระบบเป็นหมวดหมู่เว็บไซต์ดีๆเหล่านี้ ก็จะได้ถูกคนค้นพบได้โดยง่าย
</p>
<h3>Website Today</h3>
</td>
</tr>
<tr>
<td colspan=’2′ bgcolor=’#ffffff’>
<table width=’95%’ align=’center’ style=’font-size:12px;’>
<tr bgcolor=’#FF0099′ style=’color:#ffffff;’ align=’center’>
<td width=’20%’>รายชื่อ</td>
<td width=’20%’>URL</td>
<td>รายละเอียด</td>
</tr>”;
$sql = ‘SELECT * FROM site ORDER BY site_id DESC LIMIT 0 , 10′;
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result) ) {
echo “<tr bgcolor=’#cccccc’ style=’color:#000000;’>
<td width=’20%’>$data[site_name]</td>
<td width=’20%’>$data[site_url]</td>
<td>$data[site_description]</td>
</tr>”;
}
$num_sql = ‘SELECT site_id FROM site’;
$num_result = mysql_query($num_sql);
$num = mysql_num_rows($num_result);
echo “
</table>
<br /><br />
<font size=-1>เรามี website ในระบบทั้งหมด “.$num.” web</font>
</td>
</tr>
“;
}

Code ทั้งหมดจะถูกเขียนต่อๆกันลงมาเรื่อยๆเลยนะครับ
$sql = ‘SELECT * FROM site ORDER BY site_id DESC LIMIT 0 , 10′;
หมายถึง
ดึงทุกอย่างที่อยู่ในตาราง site ออกมาเรียงตามลำดับ site_id จากมากไปน้อยจำนวน 10 record นะครับ
จากนั้นผมใช้ While loop ดึงข้อมูลออกมาแสดง แล้วค่อยมานับข้อมูลของตารางทั้งหมดอีกทีใน $num

หน้าต่อไป Search

search

search

 

หน้านี้ก็มีเพียงแค่กล่องค้นหากล่องเดียวนะครับวางไว้ตรงกลางเลยมาดู Code เลยแล้วกัน

<tr>
<td colspan=’2′ bgcolor=’#ffffff’>
<p style=’font-size:12px; padding-left:10px; padding-top:10px; padding-bottom:2px; padding-right:50px;’>
เว็บไซต์ที่น่าสนใจและมีความรู้ มีสาระทุกวันนี้มีเกิดขึ้นเป็นจำนวนมาก ผมมองว่า หากเรามีการรวบรวมเอาไว้เป็นระบบเป็นหมวดหมู่เว็บไซต์ดีๆเหล่านี้ ก็จะได้ถูกคนค้นพบได้โดยง่าย
</p>
<h3 style=padding-left:10px;>Search</h3>
</td>
</tr>
<tr>
<td colspan=’2′ bgcolor=’#ffffff’>
<form action=index.php?search2 method=post name=search>
<table width=’80%’ align=’center’ style=’font-size:12px;’>
<tr bgcolor=’#FF0099′ style=’color:#ffffff;’ align=’center’>
<td>ใส่ Keywords ที่ต้องการค้นหา
<input type=text name=search size=30 />
<input type=submit value=search />
</td>
</tr>
</table>
</form>
<br /><br />
</td>
</tr>

หน้านี้ผมวางให้ form ส่งค่า action ไปที่หน้า index.php เหมือนเดิมเพียงแต่ฝากค่าไปด้วยคือ search และส่งข้อมูลแบบ Post นะครับ

หน้าถัดไปเป็นหน้าที่มีการค้นหาเสร็จแล้ว
ก่อนอื่นก็จะประกาศตัวแปรก่อน $search = $_POST[search];
จากนั้นค่อเป็นแบบนี้

<table width=’95%’ align=’center’ style=’font-size:12px;’>
<tr bgcolor=’#FF0099′ style=’color:#ffffff;’ align=’center’>
<td width=’20%’>รายชื่อ</td>
<td width=’20%’>URL</td>
<td>รายละเอียด</td>
</tr>”;
$sql = “SELECT * FROM site WHERE site_name LIKE ‘%$search%’ AND site_url LIKE ‘%$search%’ “;
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result) ) {
echo “<tr bgcolor=’#cccccc’ style=’color:#000000;’>
<td width=’20%’>$data[site_name]</td>
<td width=’20%’>$data[site_url]</td>
<td>$data[site_description]</td>
</tr>”;

หลังจากประกาศค่าตัวแปรรแล้วผมก็เอามาค้นหาจาก ชื่อและ url ของเว็บไซต์นะครับโดยเอา % มาเป็นตัวช่วย

หน้าถัดไป Category

category

category

 

หน้านี้ก็จะมีการดึงหมวดหมู่มาแสดง แล้วให้นับออกมาด้วยว่าในแต่ละหมวดมีรายชื่อเว็บไซต์อยู่กี่ชื่อนะครับ

<td bgcolor=’#ffffff’ style=’padding-left:20px;’>”;
$sql = ‘SELECT * FROM site_category’;
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result) ) {
echo “<h3><a href=index.php?$data[cat_name]>”;
echo $data['cat_name'];
echo “</a></h3> :: “;
echo $data['cat_des'];
$num_web = mysql_query(“SELECT * FROM site WHERE site_category = ‘$data[cat_name]‘ “);
$num = mysql_num_rows($num_web);
echo “[ $num ] “;
echo “<br />”;
}

จาก Code ตรงนี้ผมดึงมาอีกจากตาราง site_category นะครับ ดังนั้นฐานข้อมูลก็จะเป็นคนละตารางกับรายชื่อของเว็บไซต์ที่จัดเก็บเอาไว้ ตรงนี้ก็แค่ดึงทุกอย่างออกมาธรรมดา แล้วนับด้วย mysql_num_rows โดยวางตัวนับเอาไว้ใน While loop นะครับ ไม่งั้นมันก็จะไม่รู้ว่าชื่อของหมวดหมู่นะชื่ออะไรแล้วมันจะนับไม่ถูก

หน้าต่อไปเมื่อค้นหาข้อมูลตามหมวดหมู่มาแล้วก็จะเจอแบบนี้ครับ

goverment

goverment

 

เป็นหน้าที่แสดงว่ามีรายชื่อเว็บไซต์อยู่ทั้งหมดกี่เว็บ และมี link พาไปด้วยนะครับ

<td bgcolor=’#ffffff’ style=’padding-left:20px;’>”;
$sql = ‘SELECT * FROM site where site_category =”goverment” ‘;
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result) ) {
echo “<p>”.$data[site_name].”<br />”;
echo “<a href=$data[site_url]>”.$data[site_url].”</a></p>”;
}

Code ก็เป็นแค่การดึงเอาข้อมูลมาแสดงตามรายชื่อของหมวดหมู่เท่านั้นเองนะครับ จริงๆแล้วหมวดหมู่นี่ไม่ต้องสร้างเป็นตารางใหม่ก็ได้ผมเพียงแต่ทำเผื่อเอา ไว้นะครับ เผื่ออนาคตจะมีคนนำไปปรับใช้ได้

หน้าต่อไปเป็น Site Submit

 

site_submit

site_submit

 

 

ตรงนี้ก็จะเป็นส่วนของ Form สำหรับรับค่า่ต่างๆของ website ที่ต้องการจัดเก็บแล้วพาลงไปฐานข้อมูลนั้นแหละครับ

 

<form action=index.php?submit method=post name=insert>
<table width=’60%’ align=’center’ style=’font-size:12px;’>
<tr bgcolor=’#FF0099′ style=’color:#ffffff;’>
<td width=’25%’>Site Name</td>
<td><input type=’text’ name=’site_name’ size=’20′ /></td>
</tr>
<tr bgcolor=’#FF0099′ style=’color:#ffffff;’>
<td width=’25%’>Site Url</td>
<td><input type=’text’ name=’site_url’ size=’20′ /></td>
</tr>
<tr bgcolor=’#FF0099′ style=’color:#ffffff;’>
<td width=’25%’>Site <br />Description</td>
<td><input type=’text’ name=’site_description’ size=’30′ /></td>
</tr>
<tr bgcolor=’#FF0099′ style=’color:#ffffff;’>
<td width=’25%’>Site <br />Recommenter</td>
<td><input type=’text’ name=’site_recommenter’ size=’20′ /></td>
</tr>
<tr bgcolor=’#FF0099′ style=’color:#ffffff;’>
<td width=’25%’>Site Category</td>
<td>
<select name=site_category>”;
$sql = ‘SELECT * FROM site_category ORDER BY cat_name ASC’;
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result) ) {
echo “<option value=$data[cat_name]>$data[cat_name]</option>”;
}
echo “
</select>
</td>
</tr>
<tr bgcolor=’#FF0099′ style=’color:#ffffff;’>
<td colspan=’2′>
<input type=’submit’ value=’Submit’ />
<input type=’reset’ value=’Reset’ />
</td>
</tr>
</table>
</form>

 

ทั้งหมดก็เป็นแค่การหยิบกล่องมาวางนะครับ แต่ตรง Category นั้นจะเอามาจากฐานข้อมูลอีกที โดยให้แสดงข้อมูลอยู่ภายใต้ tag select จากนั้นก็จะส่งค่าไปที่ submit

 

หน้า submit จะเป็นหน้าสำหรับป้อนข้อมูลลงไปฐานข้อมูลนะครับ

 

//ประกาศตัวแปรจากการ Submit website
$site_name = $_POST[site_name];
$site_url = $_POST[site_url];
$site_description = $_POST[site_description];
$site_recommenter = $_POST[site_recommenter];
$site_category = $_POST[site_category];

//เพิ่มข้อมูลลงฐานข้อมูลเว็บไซต์
$sql = “INSERT INTO site VALUES
(”,’$site_name’,'$site_url’,'$site_description’,'$site_recommenter’,'$site_category’)”;
mysql_query(“SET NAMES utf8″);
mysql_query(“$sql”);

 

ด้านบนเป็นการประกาศตัวแปร ส่วนด้านล่างเป็นการเพิ่มข้อมูลลงฐานข้อมูลนะครับ อืม….ระบบใช้เป็น utf8 นะครับ

 

DATABASE
ในส่วนขของฐานข้อมูลก็ใช้เป็น mysql ธรรมดานะครับ
ชื่อฐานข้อมูลว่า webdirectory
table ชื่อว่า site,site_category

 

ทั้งหมดก็มีประมาณนี้ เดี๋ยวถ้าอยากดูรายละเอียดเพิ่มเติมผมทำ video มาฝากกันด้วยนะครับ

 

 

ระบบนี้เป็นตัวอย่างที่ไม่มีการนำไปใช้จริงๆที่ไหนนะครับ ดังนั้นผมจะให้ download ไปใช้งานเพื่อทดลองเล่นดูได้ตามสบายเลยโดยไฟล์ทั้งหมดจะประกอบไปด้วย


all

all

แต่รบกวนซักนิดนะครับว่า หากคุณได้ทำการ Download ไปแล้วนั้นให้ช่วยมา comment ต่อจะติหรือชมก็ได้นะครับที่ด้านล่างของ post นี้ด้วยครับ  ขอบคุณมากครับ

——————————————————————————————————————————————

หลังจากที่ผมลองแก้ไขแบบเอาไว้ใช้บน internet แล้วนะครับ ก็จะได้ไฟล์ที่ต้องมีการ Login แบบง่ายๆที่ไม่ต้องการอะไรมาก ไม่ได้จัดเก็บรายชื่อลงฐานข้อมูลแต่เก็บลงบนไฟล์งานเลย เอาเป็นว่าลองไปดูแบบแก้ไขให้มีการ login ได้ที่นีครับ

Username : test
password : test

Download

, , , , , , , , , ,

  1. #1 by wannalak on 05/18/2012 - 3:27 am

    พี่ๆๆๆๆๆ

    มันโหลดไม่ได้อ่ะ ทำไงดี

    พี่ช่วยส่งไฟล์เข้าเมล์ได้ไหมคับ

    pond-babyghost@hotmail.com
    wannalak-chompoo@hotmail.com

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Connecting to %s