บทความ

กำลังแสดงโพสต์จาก มีนาคม, 2013

การใช้ 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='myText';
 i.value='…

การส่งค่า 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.html)

<HTML><BODY>
<fo…

ชื่อตัวแปรของ 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 sortKey As Range
'next im…

การคัดลอกข้อมูลจากหลายแผ่นงาน ของ 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).Activate       Range("A1").Enti…

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

รูปภาพ
ในกรณีที่มีรายการหลายรายการ และต้องการเริ่มต้น 1 ใหม่ ในทุก ๆ รายการ จะทำอย่างไร

จากตัวอย่างข้างล่าง ต้องการเขียนสูตรให้เริ่มต้นที่ 1 ที่รายการ ดินสอ ปากกา และสมุด



หลักการ
ใช้การเปรียบเทียบว่า ถ้าเซลล์ปัจจุบัน เหมือนกับเซลล์ก่อนหน้านั้น ให้เอา 1 บวกกับเลขลำดับก่อนหน้านั้น แต่ถ้าไม่เหมือน ก็ให้เริ่ม 1 ใหม่
วิธีการ
ที่เซลล์ A2 ให้พิมพ์สูตร ดังนี้

=IF(B2=B1,A1+1,1)

กด Ctrl + Enter (เพื่อให้ประมวลผลและยังคงเลือกอยู่ที่เซลล์ A2 เหมือนเดิม)ดับเบิ้ลคลิกที่ปุ่มเติมข้อมูล (Fill Handle)

จะได้รายการดังภาพ

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

ถ้ามีการจัดลำดับในแต่ละรายการด้วย จะทำให้เห็นภาพรวมของแต่ละรายการได้ดีขึ้น

หรือ ถ้าต้องการดูเฉพาะ รายการที่ 1-3 ก็สามารถใช้การกรอง กรองข้อมูลได้ ก็จะทำให้ดูข้อมูลง่ายขึ้น