บทความ

การสร้างฟอร์ม และ PHP อยู่ในหน้าเดียวกัน

รูปภาพ
โดยปกติเมื่อมีการสร้างฟอร์มเพื่อเก็บข้อมูลโดยใช้ PHP มักจะมี 2 ไฟล์ คือ ไฟล์ HTML สำหรับสร้างฟอร์มเพื่อเก็บข้อมูล และ เมื่อกดปุ่มส่งข้อมูล จะไปเรียกใช้งานไฟล์ PHP เราสามารถ รวมไฟล์ทั้งสองเข้าด้วยกัน เหลือไฟล์เดียว โดยใช้หลักการดังนี้ สร้างไฟล์ PHP ที่ประกอบด้วย ฟอร์มและโค้ดของ PHP ครั้งแรกให้ตรวจสอบว่ามีการคลิกปุ่มส่ง แล้วหรือยัง โดยใช้ฟังก์ชัน isset() ถ้ามีการคลิกปุ่มแล้ว ให้ไปที่โค้ด PHP ถ้ายังไม่มี ให้ไปที่ฟอร์ม ที่ฟอร์ม Action ให้เรียกชื่อไฟล์ตัวเอง คือ $_SERVER['PHP_SELF'] การใช้ PHP_SELF มีจุดอ่อน Hacker สามารถใช้ Query String ส่ง script พ่วงเข้ามาอาศัยให้ทำงานอื่น ๆ ได้ จึงควรป้องกันไว้ก่อน โดยใช้ฟังก์ชัน htmlentities() เพื่อไม่ให้สามารถพ่วงโค้ดเข้ามาได้ ในกรณีที่ เราใช้ Query String ส่งค่าเข้ามา เช่น ส่งค่า thisid ดังนี้ http://localhost/temp/phpFormDemo.php?thisid=12345 ให้รับค่า thisid ไว้ก่อน (กรณีนี้ใช้ GET แต่สามารถส่งมาทาง POST ก็ได้) และส่งค่าจากฟอร์ม ไปที่โค้ด PHP ผ่านทาง hidden input type ตัวอย่างโค้ด ฟอร์ม และ PHP ในหน้าเดียวกัน <?php $id = $_G

การแบ่งหน้าแสดงผลข้อมูล ด้วย PHP

รูปภาพ
การค้นหาข้อมูลและนำข้อมูลการแสดง ถ้าข้อมูลมีจำนวนมากไม่สะดวกในการดู จำเป็นต้องแบ่งหน้าออกเป็นหน้า ๆ เพื่อให้ดูได้สะดวก ลักษณะเดียวกับที่ Google นำผลการค้นหามาแสดงให้ดู หลักการ กำหนดข้อมูลของ limit โดยคำนวณจาก จำนวนที่ต้องการให้แสดงข้อมูลในแต่ละหน้า เพื่อนำไปใช้หาข้อมูลในฐานข้อมูลด้วยคำสั่ง SELECT จากนั้นนำผลที่ได้ไปใส่ไว้ในตัวแปร Array เพื่อนำไปแสดงในแต่ละหน้า ตัวอย่างโค้ด <?php $host= "  "; //ข้อมูลฐานข้อมูลของท่าน $usr= "  "; $pwd= "  "; $db= "  "; //ติดต่อฐานข้อมูล $cid = mysql_connect($host,$usr,$pwd);  mysql_select_db($db);  if (!$cid) { echo "ERROR: " . mysql_error() . "\n"; };  $query = "SELECT * FROM socialMedia ORDER BY fname, subject DESC";  $result = mysql_query($query) or die("Couldn't execute query" . mysql_error());  // student table  $numrows=mysql_num_rows($result);  if ($numrows == 0)   {  echo "<table>";  echo "<tr valign=\"top\"><td&g

การสร้างฟอร์มค้นหา และให้แสดงผลการค้นหาในหน้าเดียวกัน ด้วย PHP

รูปภาพ
เมื่อครั้งที่แล้ว พูดถึงเรื่อง การใช้ javascript สร้างฟอร์มอัตโนมัติ แล้วส่งค่าไปยัง PHP  คราวนี้จะเป็นการนำค่าที่ส่งมาตรวจสอบ และถ้าถูกต้องให้แสดงช่องสำหรับให้พิมพ์คำค้นหา และให้แสดงผลการค้นหาในหน้าเดียวกัน ในตัวอย่างนี้ ไม่ได้แสดงวิธีการค้นหาคำในฐานข้อมูล แต่แสดงคำค้นหาเท่านั้น การค้นหาในฐานข้อมูลเป็นเรื่องพื้นฐานที่ควรรู้อีกเรื่องหนึ่ง โค้ด PHP การตรวจสอบคำ การแสดงฟอร์มการค้นหา และแสดงผลในหน้าเดียวกัน <?php  if ($isPwdOK == ""){ $thisPwd = $_POST["myText"];  } if($thisPwd == "นฤมล" || $isPwdOK == "yes"){  echo "<H2>ยินดีต้อนรับ คุณ$thisPwd</H2>";  ?> <h2>ค้นหา</h2>  <form name="search" method="post" action="<?=$PHP_SELF?>">  ข้อมูลที่ต้องการค้นหา: <input type="text" name="find" />  <input type="hidden" name="searching" value="yes" />  <input type="hidden" name="isPwdO

การใช้ javascript สร้างฟอร์มอัตโนมัติ แล้วส่งค่าไปยัง PHP

รูปภาพ
ถ้าต้องการคลิกปุ่ม แล้วให้เกิดฟอร์มรับค่าโดยอัตโนมัติ (on the fly) เพื่อส่งค่าไปยัง PHP จะทำอย่างไร หลักการ ใช้สร้างปุ่มที่มีลักษณะเป็น Button และเมื่อคลิกปุ่ม ให้ไปเรียกใช้งานฟังก์ชันที่ใช้ javascript สร้างแบบฟอร์ม และส่งข้อมูลไปยังไฟล์ PHP วิธีการ สร้างไฟล์ html ดังนี้ (ไฟล์ jsFormDemo.html) <HTML>  <HEAD>  <meta http-equiv="Content-Type" content="text/html; charset=tis-620"> <script language="javascript" type="text/javascript"> function displayForm(){  var d=document;  var test_div = document.getElementById('pwdForm');  document.getElementById('pwdForm').innerHTML="รหัสเข้าใช้งาน";  var f = test_div.appendChild(d.createElement('form'));  var i=d.createElement('input');  var i2=i.cloneNode(false);  var br=d.createElement('br');  f.action='adminPage.php';  f.method='POST';  f.name='f';  i.type='text';  i.name='

การส่งค่า Array ผ่านแบบฟอร์มของ PHP

รูปภาพ
โจทย์: ต้องการส่งรายชื่อบุคคลซึ่งเก็บอยู่ในตัวแปร Array ของ PHP โดยส่งผ่านฟอร์ม จะทำอย่างไร ตัวแปรที่มีรายชื่อบุคคลคือ  $nameArray = array("ประสงค์","ประสิทธิ์","ประสาท"); หลักการ นำค่าที่อยู่ใน Array ไปใส่ในลง form element โดยให้อยู่ในรูปของ PHP Array แล้วส่งออกไปยังไฟล์ PHP ที่รับค่า วิธีการ ไฟล์แบบฟอร์ม (ไฟล์ myform.php) <html><body> <form method="POST" action="showarray.php"> <?php $nameArray = array("ประสงค์","ประสิทธิ์","ประสาท"); foreach($nameArray as $names){ //นำค่าไปใส่ form element   echo '<input type="hidden" name="members[]" value="'. $names. '">'; } ?> คลิกเพื่อส่งข้อมูล<br> <input type="submit" value=" ส่ง "> </body></html> แสดงผล   ในกรณีที่เราสร้างแบบฟอร์มสำหรับกรอกข้อมูล ก็สามารถรับค่าเข้ามาเป็น Array และส่งออกได้ทันที เช่น (ไฟล์ myform.h

ชื่อตัวแปรของ PHP ที่ประกอบด้วย ข้อความและตัวแปร

รูปภาพ
ชื่อตัวแปรใน PHP สามารถกำหนดให้มีตัวแปร ร่วมกับข้อความได้ ทำให้มีความยืดหยุ่น และนำไปประยุกต์ใช้ได้ในหลายกรณี ทำให้การเขียนโค้ดสั้นเข้า และมีประสิทธิภาพมากขึ้น รูปแบบที่ใช้คือ  ${"ข้อความ" . $ชื่อตัวแปร} ตัวอย่าง  ${"stAns" . $i} แนวทางการใช้งาน โค้ดต่อไปนี้ ให้พิมพ์ค่าตัวแปรที่กำหนด ผลที่ได้คือ คำตอบข้อที่ 1 คือ 20 คำตอบข้อที่ 2 คือ 10 คำตอบข้อที่ 3 คือ 30 คำตอบข้อที่ 4 คือ 10 คำตอบข้อที่ 5 คือ 50 โค้ดต่อไปนี้ รับข้อมูลจากแบบทดสอบ และนำมาตรวจกับเฉลย พร้อมแสดงคะแนน

การเรียงข้อมูลหลายแผ่นงานพร้อมกัน

รูปภาพ
ใน Excel ถ้ามีการจัดเก็บข้อมูลโครงสร้างเหมือนกัน แต่แยกเก็บในหลายแผ่นงาน เช่น อาจจะแยกเป็นรายภูมิภาค รายร้านค้า รายแผนก หรือ อื่น ๆ เป็นต้น การเรียงข้อมูลในแต่ละแผ่นงาน จะทำได้ช้า โดยเฉพาะถ้ามีแผ่นงานจำนวนมาก ยิ่งจะช้ามาก เนื่องจากต้องทำทีละแผ่นงาน การเรียงข้อมูลหลายแผ่นงานพร้อมกัน ต้องใช้ VBA หรือ แมโคร ช่วย วิธีการเรียกใช้งาน แมโคร ให้ดูเรื่อง การคัดลอกข้อมูลจากหลายแผ่นงาน ของ Excel ข้อควรระวัง เมื่อเรียงข้อมูลแล้ว จะย้อนกลับเดิมไม่ได้ ดังนั้นก่อนเรียงข้อมูลควรคัดลอกข้อมูลเดิมไว้ก่อน หรือคัดลอกข้อมูลไปที่อื่น แล้วจึงทำการใช้แมโครนี้ Sub SortAllSheets() 'ปรับแก้ตามข้อมูลของท่าน Const firstColToSort = "A" ' คอลัมน์แรก Const lastColToSort = "C"   ' คอลัมน์สุดท้าย Const keyCol = "A" ' คอลัมน์ที่จะให้เรียงข้อมูล ' คอลัมน์ที่มีข้อมูลทุกแถว 'อาจจะใช้ keyCol ก็ได้ แต่ไม่จำเป็น Const testCol = "C" ' แถวเริ่มต้นข้อมูล (หัวตาราง) Const startFrom = 1 Dim anyWS As Worksheet Dim sortRange As Range Dim sor

การคัดลอกข้อมูลจากหลายแผ่นงาน ของ Excel

รูปภาพ
ถ้าต้องการรวมข้อมูลที่มีโครงสร้างเหมือนกัน ในหลาย ๆ แผ่นงาน นำมารวมไว้ในแผ่นงานเดียวกัน เพื่อจะได้เปรียบเทียบ หรือเรียงข้อมูลใหม่ จะทำอย่างไร เช่น ในกรณีที่ใช้ Excel เก็บข้อมูลการใช้จ่ายเงินงบประมาณโครงการหลายโครงการ ( แผ่นงาน Excel คุมงบประมาณโครงการ หลายโครงการ )  แยกเป็นโครงการละ Sheet ต่อมาต้องการนำข้อมูลทั้งหมดมารวมกัน และเรียงข้อมูลตามวันที่ จะทำอย่างไร สมมติว่า ต้องการรวมข้อมูลจาก 2 แผ่นงาน ข้างล่างนี้ ไว้ด้วยกันเป็นแผ่นงานเดียว ข้อมูลแผ่นงานที่ 1 ข้อมูลแผ่นงานที่ 2 วิธีที่สะดวกที่สุด คือการลากดำแล้ว คัดลอก และวาง จะสะดวกที่สุด แต่ถ้ามี เป็นสิบ ๆ แผ่นงาน ไม่น่าจะสะดวกแน่ ใช้ Macro ข้างล่างนี้ จัดการนำข้อมูลทั้งหมดมารวมกัน ดูจะสะดวกกว่ามาก Sub Combine()     Dim J As Integer     On Error Resume Next     Sheets(1).Select     Worksheets.Add ' เพิ่ม Sheet เพื่อยังคงรักษาข้อมูลเดิมไว้ทั้งหมด     Sheets(1).Name = "รวมข้อมูลทั้งหมด"     ' คัดลอกส่วนหัวตารางส่วนบน ถ้าข้อมูลอยู่ในตำแหน่งอื่น ให้เปลี่ยนตามข้อมูลที่มี     Sheets(2).Activ

สูตรสำหรับเริ่มนับใหม่ เมื่อขึ้นรายการใหม่ ของ Excel

รูปภาพ
ในกรณีที่มีรายการหลายรายการ และต้องการเริ่มต้น 1 ใหม่ ในทุก ๆ รายการ จะทำอย่างไร จากตัวอย่างข้างล่าง ต้องการเขียนสูตรให้เริ่มต้นที่ 1 ที่รายการ ดินสอ ปากกา และสมุด หลักการ ใช้การเปรียบเทียบว่า ถ้าเซลล์ปัจจุบัน เหมือนกับเซลล์ก่อนหน้านั้น ให้เอา 1 บวกกับเลขลำดับก่อนหน้านั้น แต่ถ้าไม่เหมือน ก็ให้เริ่ม 1 ใหม่ วิธีการ ที่เซลล์ A2 ให้พิมพ์สูตร ดังนี้ =IF(B2=B1,A1+1,1) กด Ctrl + Enter (เพื่อให้ประมวลผลและยังคงเลือกอยู่ที่เซลล์ A2 เหมือนเดิม) ดับเบิ้ลคลิกที่ปุ่มเติมข้อมูล (Fill Handle) จะได้รายการดังภาพ สูตรนี้มีประโยชน์ ในกรณีที่มีหลาย ๆ รายการ เพิ่มขึ้นเรื่อย ๆ ให้เรียงข้อมูลก่อน แล้วจึงจัดลำดับ จะได้รายการชนิดเดียวกัน อยู่ด้วยกัน และมีหมายเลขกำกับ ถ้ามีการจัดลำดับในแต่ละรายการด้วย จะทำให้เห็นภาพรวมของแต่ละรายการได้ดีขึ้น หรือ ถ้าต้องการดูเฉพาะ รายการที่ 1-3 ก็สามารถใช้การกรอง กรองข้อมูลได้ ก็จะทำให้ดูข้อมูลง่ายขึ้น 

การใช้สูตร Text() หาอัตราส่วน ใน Excel

รูปภาพ
ปัญหา ต้องการหาอัตราส่วนของตัวเลข 2 ตัว เช่น ให้หาอัตราส่วนของ 2 และ 4 (คำตอบคือ 1:2) โดยใช้ Excel จะต้องทำอย่างไร แนวทาง Excel ไม่มีฟังกชันสำหรับหาอัตราส่วนให้โดยตรง แต่สามารถทำได้หลายอย่าง วิธีแรก คือนำตัวเลขทั้ง 2 ตัว มาหารกัน แล้วจัดรูปแบบให้เป็น Fraction โดยระบุจำนวนจุดทศนิยมก็จะได้อัตราส่วน ในรูปแบบที่มีเครื่องหมาย / เช่น 1/2 วิธีนี้ มีข้อแม้ว่า ตัวเลขตัวแรก จะต้องน้อยกว่าตัวเลขตัวที่สอง มิฉะนั้น จะมีเลขจำนวนเต็มเกิดขึ้น วิธีที่สอง ใช้สูตร Text() จัดการ วิธีนี้ใช้ได้ดี สามารถกำหนดจำนวนทศนิยมได้เอง ไม่มีข้อจำกัด แต่ค่าที่ได้จะอยู่ในรูปของตัวหนังสือ หรือ Text ไม่ใช่ค่าตัวเลขอีกต่อไป การใช้สูตร Text() หาอัตราส่วนระหว่างตัวเลข 2 จำนวน หลักการ วิธีนี้ คล้ายกับวิธีแรก คือนำตัวเลขสองตัวมาหารกัน แล้วกำหนดรูปแบบโดยให้มีเครื่องหมาย / ให้แสดงเป็นเศษส่วน จากนั้นจึงเปลี่ยนเครื่องหมาย / ให้เป็นเครื่องหมาย : โดยใช้สูตร Substitute() ก็จะได้ตามต้องการ โจทย์ ให้หาอัตราส่วนระหว่างตัวเลขสองจำนวน ข้างล่างนี้ วิธีการ คลิกที่เซลล์ C2 พิมพ์ข้อความที่แถบสูตร =SUBSTITUTE(TEXT(A2

การ share ระหว่าง Window 7 กับ Windows XP

รูปภาพ
Windows 7 มีให้ Share ระหว่าง Windows 7 ด้วยกัน ถ้าต้องการ Share ระหว่าง Windows 7 และ Windows XP จะเกิดปัญหาแม้ว่าจะอยู่ใน Group เดียวกัน ก็ตาม ปัญหาที่ว่า คือ ส่งไฟล์จาก Windows 7 ไปยังเครื่อง Windows XP ได้ แต่จาก XP จะมา 7 เข้าไม่ได้ ถ้าจะให้เครื่อง Windows XP สามารถส่งไฟล์ไปที่ Windows 7 ได้ ต้องทำดังนี้ ที่เครื่อง Windows 7 คลิกขวาที่ห้องที่ต้องการ Share เลือก Share with และเลือก Specific people... เลือก Everyone คลิก Add คลิกเลือก Permission Level เลือก Read/Write เพื่อให้อ่าน/เขียน ได้ คลิกปุ่ม Share ด้านล่าง จะเปิดหน้าใหม่ และแสดง link ให้เห็น คลิกปุ่ม Done เป็นอันเสร็จ ถ้าดูจากเครื่อง Windows XP จะเห็นไฟล์ในห้อง และสามารถ คัดลอก หรือส่งไฟล์เข้าในห้องที่ Share ได้ เป็นปกติ