A-AA+then

ข้อผิดพลาด Notice: Undefined xxx หมายถึง มีการใช้ตัวแปร xxx ที่ไม่มีอยู่จริงครับ

ลองดูตัวอย่างด้านล่างนะครับ ตัวอย่างนี้ถ้านำไปรัน จะเกิด error ตามด้านบน
if ($xxx == '') {
}
$id = $_GET['id'];

สาเหตุที่เกิด error (จริงๆมันเป็นแค่ "คำเตือน" เท่านั้น ซึ่งเราจะไม่สนใจก็ได้) เป็นเพราะ เราไม่ได้มีการประกาศตัวแปรมาก่อนครับ เช่น ตัวแปร $xxx อยู่ดีๆก็มีการเรียกใช้เลย โดยที่ไม่รู้ว่าตัวแปรนี้เก็บค่าอะไร หรือตัวแปร $_GET['id'] ที่ไม่ได้มีการส่งค่ามาก่อน (querystring)

การแก้ไข
วิธีแรก คือ ต้องมีการประกาศตัวแปรไว้ก่อนเสมอ แม้ว่าอาจจะไม่มีการใช้งานตัวแปรนั้นๆก่อนหน้า
$xxx = '';
if ($xxx == '') {
}

วิธีที่สอง ใช้การตรวจสอบว่ามีตัวแปรหรือไม่ ก่อนการใช้งาน ด้วย isset
if (isset($_GET['id'])) {
    $id = $_GET['id'];
} else {
    $id = 0;
}

คำสั่งด้านบน $id จะมีค่า 0 หากไม่มีการส่งค่า id มาจาก querystring (URL) หรือจะเขียนแบบสั้นๆได้
$id = isset($_GET['id']) ? $_GET['id'] : 0;
อย่างที่ผมบอกว่ามันเป็นแค่ "คำเตือน" เท่านั้น ซึ่ง PHP ยังสามารถทำงานต่อได้จนจบ และในบาง Server (โดยเฉพาะ Server ที่ใช้งานจริง) มักมีการปิดการแสดงผลข้อผิดพลาดลักษณะนี้ไว้ (หลายๆคนอาจเคยพบว่าโค้ดสามารถรันบน Server ได้ปกติ แต่พอเอาโค้ดลงมาทดสอบบนเครื่องของเราเองกลับพบ Error เพียบ) ดังนั้นการแก้ไขอีกหนทางหนึ่ง คือการปิดการแจ้งเตือนข้อผิดพลาดของ PHP ซะ
จริงๆผมไม่แนะนำให้ปิดการแจ้งเตือนนะครับ เพราะหากมีข้อผิดพลาดใดๆที่สำคัญขึ้นมาเราจะหาไม่เจอ สิ่งที่ควรทำจริงๆในกรณีนี้ คือการประกาศตัวแปรก่อนเสมอ หรือ มีการทดสอบว่ามีตัวแปรอยู่จริงหรือไม่ ก่อนนำไปใช้งาน

Relate

^