ผมมักจะแวะเวียนเข้าไปที่พันธิพ ห้อง developer อยู่เป็นประจำ ก็กะจะเข้าไปหาคำถาม เพื่อจะได้นำกลับมาคิด คำถามของบางคนให้มุมมองที่เราไม่เคยคิดมาก่อน หรือบางทีเราก็ผ่านตาเป็นประจำ แต่ไม่เคยตั้งคำถามกับมัน

คำถามหนึ่งที่ผมเจอและคิดว่าจะเขียนเป็นเรื่องสักที คือคำถามในลักษณะว่า เราจะเชื่อม javascript กับ php ได้อย่างไร หรือ อยากจะ export ข้อมูลในฐานข้อมูล ออกมาเป็น XML เพื่อทำกราฟ (ค่ะ,ครับ) อะไรทำนองนี้

เอาล่ะครับ PHP ไม่ได้เป็นอะไรมากกว่าข้อความที่มีรูปแบบเฉพาะ ที่รันบนเซิฟเวอร์ แล้วให้ผลลัพธ์ออกมาเป็น ข้อความ javascript ไม่ได้เป็นอะไรมากกว่า ข้อความที่มีรูปแบบเฉพาะ ที่รันบนเบราเซอร์ และ XML ไม่ได้เป็นอะไรมากกว่าข้อความที่ถูกจัดรูปแบบ

 

ทั้ง 3 ภาษามันก็เป็นข้อความกันทั้งหมด เพียงแต่มันมีรูปแบบของตัวเองเท่านั้น PHP รันที่เซิฟเวอร์ javascript รันที่เครื่องเรา  เมื่อใดก็ตามที่เราเข้าเว็บที่เขียนด้วย PHP เราพิมพ์ URL แล้วกด Enter โป๊ะ เบราเซอร์ก็จะส่งข้อความบางอย่างไปหาเซิฟเวอร์เพื่อขอข้อมูลของหน้านั้น เซิฟเวอร์ เมื่อรับทราบว่าเป็นไฟล์ PHP ก็จะทำการแปลแล้วก็ให้ผลลัพธ์ ออกมาเป็นข้อความ โปรดเข้าใจนะครับว่า เซิฟเวอร์มันไม่รู้หรอกว่าสิ่งที่ได้นั้นเป็น javascript html หรือ อะไร มันรู้แต่ว่า สิ่งที่ประมวลผลได้มาคือข้อความ ข้อความเท่านั้น

หลังจากได้ข้อความแล้วเซิฟเวอร์ก็จะส่งกลับไปให้เบราเซอร์  เบราเซอร์ก็จะแยกแยะข้อความที่ได้มา ว่ามี javascript ปนอยู่ด้วยหรือเปล่า หรือ html อย่างเดียว แล้วก็จะแสดงผลออกมาที่หน้าจอ

 

จะเห็นว่า PHP กับ javascript นั้นทำงานกันคนละครั้ง  เพราะฉะนั้น สองภาษานี้สามารถเขียนปนลงไปด้วยกันได้

1
2
3
4
5
<script type="text/javascript">
<?php
echo "alert('This is alert');";
?>
</script>

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

ส่วน PHP กับ XML นั้น ไม่ต้องงงครับ เพียงแค่ท่าน echo ข้อความออกมาตามรูปแบบ XML ที่ต้องการ มันก็เป็น XML แล้วครับ

1
2
3
4
5
6
 
echo "<?xml version='1.0' ?>";
echo "<student>";
echo "  <name>example name</name>";
echo "  <id>123456789</id>";
echo "</student>";

ถ้าต้องการให้เป็นไฟล์นามสกุล .xml ท่านก็ใช้คำสั่ง PHP สร้างไฟล์ แล้ว echo ข้อความ XML ลงไป มันก็จะเป็น XML แท้ๆ