fb_ads

www.รับเขียนโปรแกรม.net รับเขียนโปรแกรม ระบบต่างๆ เช่น ระบบข้อมูลบุคคล ระบบข้อมูลลูกค้า ระบบซื้อขาย คลังสินค้า ระบบเช่าจอง ทำงานบน Website ด้วย PHP MySql NodeJs HTML5 JavaScript Ajax

เทคนิคการเขียนคำสั่ง sql ป้องกันเวลาทับซ้อนในระบบจอง


สำหรับระบบการจองนั้น จำเป็นอย่างยิ่งที่จะต้องมีการตรวจสอบไม่ให้การจองมีการทับซ้อนกับเวลาที่มีการจองไว้แล้วในต่อไปนี้นี้คือคำสั่ง sql ตรวจสอบว่าการจองต้องไม่ทับซ้อนกัน



//กำหนดให้ เวลาที่ต้องการจอง อยู่เริ่มจากเวลาจริง $min นาที และเลิกก่อนเวลาจริง $min นาที
//เพราะผู้ใช้จะได้สามารถจองในเวลาถัดไปได้เลย โดยที่ไม่ทับกับการจองก่อนหน้า
$start_time=date('Y-m-d H:i:s', strtotime(' +'.$min.' minutes', strtotime($_POST["start_time"]) ));
$end_time=date('Y-m-d H:i:s', strtotime(' -'.$min.' minutes', strtotime($_POST["end_time"]) ));

//ตัวอย่างคำสั่ง sql สำหรับตรวจสอบการจอง
            $sql="SELECT * FROM reservation
             WHERE(
                   ( (start_time>='".$start_time."')AND(end_time<='".$end_time."') )OR
                   ( (start_time<='".$start_time."')AND(end_time>='".$end_time."') )OR
                   ( (start_time BETWEEN '".$start_time."' AND '".$end_time."') )OR
                   ( (end_time BETWEEN '".$start_time."' AND '".$end_time."') )
            )";

//เวลาที่จองใหม่ต้องไม่คล่อมเวลาที่จองเดิม
(start_time>='".$start_time."')AND(end_time<='".$end_time."')

//เวลาที่จองใหม่ต้องไม่อยู่ในเวลาที่จองเดิม
(start_time<='".$start_time."')AND(end_time>='".$end_time."')

 //เวลาที่จองใหม่ต้องไม่ทับซ้อนเวลาที่จองเดิม
( (start_time BETWEEN '".$start_time."' AND '".$end_time."') )OR
( (end_time BETWEEN '".$start_time."' AND '".$end_time."') )

ถ้ารันคำสั่งตามเงื่อนไขแล้วมีผลลัพธ์มากกว่าหนึ่งแถวแสดงว่าการจองมีการทับซ้อน


ตัวอย่างการทำ Firebase Authentication Login โดย Google Account


Firebase นั้นมี API สำหรับการทำ  Authentication โดย Google Account โดยมีขั้นตอนดังต่อไปนี้


รับเขียนโปรแกรม Firebase Javascript



ไปที่ https://console.firebase.google.com/ 
ดูการตั้งค่าโครงการสำหรับ javascript โดยไปที่รูปเฟืองด้านบนซ้าย
  
 เลือกดูการตั้งค่า Firebase สำหรับ Web เมื่อกดแล้วหน้าเว็บจะขึ้น popup code 
การตั้งค่า ให้ copy code มาไว้ในไฟล์ html ของเว็บ
 

เมื่อตั้งค่า Firebase สำหรับเว็บแล้วให้เลือกแถบ  Authentication ด้านซ้าย



เลือกวิธีการลงชื่อเข้าใช้


เลือก google



เลือกเปิดการใช้งาน

ตัวอย่าง Code การทำ Authentication ด้วย google


<!DOCTYPE html>
<html lang="th">
<head>
  <title>Firebase Google Authentication</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script><script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<script src="https://use.fontawesome.com/releases/v5.5.0/js/all.js" ></script>
 <script src="https://www.gstatic.com/firebasejs/5.5.9/firebase.js"></script>
 
  <script>
    // ตั้งค่า Firebase สามารถ ดูได้ตามรูปที่ 2
    var config = {
      apiKey: "...",
      authDomain: "...",
      databaseURL: "...",
      projectId: "...",
      storageBucket: "...",
      messagingSenderId: "..."
    };
    firebase.initializeApp(config);
  </script>
 
</head>
<body>

<div class="container">
 
    <br /><br />

    <div id="login_panel" class='text-right' >
         <!--  สร้างปุ่มเข้าสู่ระบบโดยกำหนดให้ยังไม่แสดงในครั้งแรก  -->
          <button class="btn btn-primary btn_login "  style="display:none" >
                <i class="fa fa-key" ></i> เข้าสู่ระบบ
         </button>
          <!--  สร้าง span สำหรับ  -->
          <span class="user_info" ></span>
          <!--  สร้าง ออกจากระบบ ระบบโดยกำหนดให้ยังไม่แสดงในครั้งแรก  -->
          <button class="btn btn-danger  btn_sign_out " style="display:none" >
                 <i class="fa fa-sign-out-alt" ></i> ออกจากระบบ
          </button>

    </div>

    <script>

           //bind event กำหนด function การทำงานเมื่อ กดปุ่ม เข้าสู่ระบบ
            $("#login_panel").find(".btn_login").on("click",function(){
                    //เมื่อกดปุ่มเข้าสู่ระบบแล้ว ให้ไปที่ หน้าจอของ google
                    var GoogleAuthProvider = new firebase.auth.GoogleAuthProvider();
                    firebase.auth().signInWithRedirect(GoogleAuthProvider);

            });
           
             //bind event กำหนด function การทำงานเมื่อ กดปุ่มออกจากระบบ
            $("#login_panel").find(".btn_sign_out").on("click",function(){
                //คำสั่ง ออกจการะบบ ของ firebase
                firebase.auth().signOut().then(function() {
                   
                });

            });
            //ชุดคำสั่งของ firebase เมื่อมีการเปลี่ยนแปลงสถานะการ login
            firebase.auth().onAuthStateChanged(function(user) {

                if (user)// เมื่อผู้ใช้อยู่ใน สถานะ login
                {
                    console.log(user);
                    $("#login_panel").find(".btn_login").css("display","none");//ซ่อนปุ่ม เข้าสู่ระบบ
                    $("#login_panel").find(".btn_sign_out").css("display","");//แสดงปุ่ม ออกจากระบบ
                    $("#login_panel").find(".user_info").html(user.displayName);//แสดงชื่อผู้ใช้ ที่ login
                }
                else // เมื่อผู้ใช้ไม่ได้อยู่ใน สถานะ login
                {
                    $("#login_panel").find(".btn_login").css("display","");//แสดงปุ่ม เข้าสู่ระบบ
                    $("#login_panel").find(".btn_sign_out").css("display","none");//ซ่อนปุ่ม ออกจากระบบ
                    $("#login_panel").find(".user_info").html("");//ซ่อนชื่อผู้ใช้

                }
            });

    </script>

</div>
</body>
</html>

let กับ var ต่างกันอย่างไร


การประกาศตัวแปรใน javascript นั้น เราใช้คำสั่ง var ตามด้วย ชื่อตัวแปร
แต่ Javascript ES6 ได้เพิ่ม การประกาศตัวแปรแบบ let  มาด้วยในที่นี้จะอธิบายความแตกต่างระหว่างการประกาศตัวแปรระหว่าง let กับ var

รับเขียนโปรแกรม Javascript


function foo()
{
         var x=0;

         if(true)
        {
             var x = 1;
        }
 
        return x;
}

function bar()
{
         let x=0;

         if(true)
        {
            let x = 1;
         }
 
         return x;
}

alert(foo());//แจ้งเตือน 1
alert(bar());//แจ้งเตือน 0

สรุป 

สำหรับ var

var x=0;

if(true)
{
    var x = 1;
}

x ใน block if กับ x ภายนอกจะถือว่าเป็นตัวเดียวกัน

แต่สำหรับ let 

let x=0;

if(true)
{
     let x = 1;
}
 
 x ใน block if กับ x ภายนอกจะถือว่าเป็นคนละตัวกัน