Category Archives: PHP

php programming

PHP รับค่าจาก $_GET

PHP รับค่าจาก $_GET

วันนี้มาคุยเรื่อง PHP กันดีกว่าครับ ปรกติแล้วการรับส่งค่าตัวแปร query string
ที่รับมาจาก $_GET ในภาษา PHP มักจะไม่ได้มีปัญหาอะไรในการใช้งาน เช่น
abc.com?id=12345 เวลาที่เราเรียกใช้งานตัวแปรก็ $_GET[id] แบบนี้ปรกติ
ไม่น่ามีปัญหาอะไร แต่ว่าปัญหามันก็เกิดจนได้นะ คือจะเรียกว่าปัญหาก็ไม่เชิงนะ
คือ เป็นความมักง่ายของผมด้วยคือผมมีความคิดจะใส่เครื่องหมาย + เพิ่มลงไปใน
query string เช่น abc.com?id=12345+67890 ทีนี้มันก็เป็นปัญหาเพราะว่า
เวลาที่เรียกใช้งานตัวแปร $_GET[id] มันดันมีช่องว่างเกิดขึ้น 12345 67890
เครื่องหมาย + หายไป กลายเป็นว่ามีช่องว่าง space มาแทนที่ ผมเลยลองมานั่ง
อ่าน Manual ใน php.net ดูก็ถึงบางอ้อ คือ การส่งผ่านตัวแปรด้วย $_GET นั้น
ตัวของ PHP จะไปเรียกใช้งานฟังก์ชั่น urldecode() ทำให้ค่าของตัวแปรที่ถูกส่ง
ผ่านทาง $_GET ก็จะไม่เหมือนเดิมครับ พูดง่ายๆ ถ้ามีเครื่องหมาย + ติดมาใน
query string มันก็จะถูกแทนที่ด้วย space หรือถ้าเป็นเครื่องหมาย %## ก็จะ
ถูก encoding เพราะงั้นก็ต้องระวังเรื่องการใช้งานด้วยครับ

อ้างอิง – http://php.net/manual/en/reserved.variables.get.php

ฟังก์ชั่น move_uploaded_file ใน PHP

ฟังก์ชั่น move_uploaded_file

ฟังก์ชั่น move_uploaded_file ใน PHP เป็นฟังก์ชั่นที่เอาไว้ย้ายไฟล์ที่เราได้อับโหลดขึ้น
Server ผ่านทาง form upload ไปเก็บในโฟลเดอร์ใหม่ ดูไปก็คล้ายกับคำสั่ง copy แต่ว่า
ปลอดภัยกว่า

Description – รูปแบบการใช้งาน

move_uploaded_file( $filename , $destination )
move_uploaded_file( ชื่อไฟล์ , ปลายทางที่จะย้าย )

Return Values – ผลลัพธ์ที่คืนกลับมา

ฟังก์ชั่น move_uploaded_file จะคืนค่า TRUE กลับมาถ้าทำงานสำเร็จ แต่ถ้าเกิดข้อผิดพลาด
ขึ้น เช่น ย้ายไฟล์ไม่ได้ หรือ ชื่อโฟลเดอร์ผิดพลาด ก็จะคืนค่า FALSE กลับมา

Example #1 – การใช้งานพื้นฐานทั่วไป

if(move_uploaded_file($_FILES['FileUpload']['tmp_name'],"upload/".$_FILES['FileUpload']['name'])){
echo "File is valid, and was successfully uploaded.\n";
}

ข้อควรระวัง – ถ้าในโฟลเดอร์มีชื่อไฟล์นั้นอยู่แล้ว ตัว move_uploaded_file จะเขียนทับไฟล์เดิม
เพราะงั้นอย่าพยายามตั้งชื่อไฟล์ให้ซ้ำกัน

คำสั่ง foreach ใน PHP

คำสั่ง foreach ใน PHP

คำสั่ง foreach ใน php เป็นคำสั่งที่ใช้เมื่อต้องการวน loop ที่เป็น array ทั้งหมดซึ่งเรา
ไม่จำเป็นต้องรู้ว่ามี array อยู่เท่าไหร่ วนทั้งหมดไม่ต้องระบุจำนวนรอบสามารถใช้คำสั่ง foreach
ได้ครับ

foreach – รูปแบบการใช้งาน

foreach ($array as $value)
{
คำสั่งที่ต้องการให้ทำซ้ำ
}

Example #1 – การใช้งานพื้นฐานทั่วไป

$arr = array(1, 2, 3, 4, 5);
foreach ($arr as $value) {
print $value;
}

อันนี้ก็เป็นตัวอย่างการใช้งานแบบพื้นๆ ไม่มีอะไรซับซ้อน จะแสดงค่าออกมา 12345 ปรกติ

Example #2 – การใช้งานกับ array ที่มี key

$arr = array(
"one" => 1,
"two" => 2,
"three" => 3,
"four" => 4,
"five" => 5);
foreach ($arr as $key => $value) {
print '$arr['.$key.'] => '.$value.'
';
}

จากตัวอย่างนี้จะเห็นว่าเมื่อนำไปใช้กับ array ที่มี key นั้น ไม่ได้ยากหรือซับซ้อนเลย

Example #3 – การใช้งานกับ array หลายมิติ (multi-dimensional arrays)

$arr = array();
$arr[0][0] = "a";
$arr[0][1] = "b";
$arr[1][0] = "c";
$arr[1][1] = "d";

foreach ($arr as $dim1) {
foreach ($dim1 as $dim2) {
print $dim2;
}
}

จากตัวอย่างที่ 3 จะซับซ้อนขึ้นมาเพราะเป็น array แบบ 2 มิติ วิธีการก็ใช้การวน 2 ชั้น คือ
วนในมิติแรกแล้วก็มาวนมิติที่ 2 อีกครั้ง ก็จะได้ค่าออกมา abcd ครับ