ข้ามไปที่เนื้อหาหลัก

การสร้างคำสั่ง SQL แบบ WHERE หลายเงื่อนไขตามค่า checkbox ที่ส่งมาในแบบฟอร์ม

 คำว่าหลายเงื่อนไขในที่นี้ก็คือการเชื่อมต่อคำสั่งค้นหาข้อมูลในฟิลด์ โดยเชื่อมด้วย AND หรือ OR เพื่อนำไปใช้กับ WHERE ของ MySQL นั่นเอง


ตอนที่ 1

ตอนที่ 2

ซอร์สโค๊ดตัวอย่าง

search_form.php

<!DOCTYPE html>
<html ng-app lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>FB : facebook.com/ToBeDeveloper : การค้นหาแบบตัวเลือกหลายเงื่อนไข</title>
    <!-- Bootstrap -->
    <link href="../../bootstrap/css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>
    <div role="main" class="container theme-showcase">

        <!-- FORM -->
        <form action="display_info.php" method="POST">
                <fieldset>
                <legend>
                    <div role="alert" class="alert alert-info">
                        การเลือกค้นหาแบบเลือกได้หลายเงื่อนไข:
                      </div>
                </legend>
                <h3>คุณสมบัติของที่พัก</h3>
                <label class="checkbox-inline">
                  <input type="checkbox" id="inlineCheckbox1" name="opt1" value="1"> พัดลม
                </label>
                <label class="checkbox-inline">
                  <input type="checkbox" id="inlineCheckbox2" name="opt2" value="1"> เครื่องปรับอากาศ
                </label>
                <label class="checkbox-inline">
                  <input type="checkbox" id="inlineCheckbox3" name="opt3" value="1"> โทรทัศน์
                </label>

                <br><hr>

                <input name="btn_submit" type="submit" value="ค้นหา">
                </field(set>
        </form>

    </div>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="../../js/jquery.min.js"></script>
    <script src="js/angular.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="../../bootstrap/js/bootstrap.min.js"></script>

  </body>
</html>


display_info.php
( PHP >= 5.5 with PDO )

<?php
    /**
     * Database Connection
     */
    try {
        $db_conn = new PDO('mysql:host=localhost;dbname=crdev_db', 'crdev', 'cr2015');
        $db_conn -> exec("SET CHARACTER SET utf8");
    } catch (PDOException $e) {
        echo "Could not connect to database";
        exit;
    }
   

    // Clear
    $error_message = '';
    $condition = '';
    $where = '';
   
    if(isset($_POST['opt1'])){
        $condition .= " option1 = 1";
    }
    if(isset($_POST['opt2'])){
        $condition .= ($condition != '' ? ' AND ' : '') . " option2 = 1";
    }
    if(isset($_POST['opt3'])){
        $condition .= ($condition != '' ? ' AND ' : '') . " option3 = 1";
    }
   
    if($condition != ''){
        $where = "WHERE $condition";
    }
   
    $sql = 'SELECT name, place, option1, option2, option3
            FROM hotel ' . $where;
    try {
      $stmt = $db_conn->prepare($sql);
     
        if($stmt) {

            // perform query
            $result = $stmt->execute();

            if($result) {
                $data = $stmt->fetchAll();

            } else {
                $error = $stmt->errorInfo();
                $error_message = "Query failed with message: " . $error[2];
            }

        }else{
            $error_message = "SQL problem has occurred: " . $e->getMessage();
        }
    } catch (PDOException $e) {
        $error_message = "A database problem has occurred: " . $e->getMessage();
    }


?>

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>การค้นหาแบบตัวเลือกหลายเงื่อนไข</title>

    <!-- Bootstrap -->
    <link href="../../bootstrap/css/bootstrap.min.css" rel="stylesheet">

  </head>
  <body>
    <div role="main" class="container theme-showcase">
        <?php
        if($error_message != ''):
            echo '<div class="alert alert-danger">',$error_message,'</div>';
        endif;
        ?>
        <h3>ผลลัพธ์: </h3>
        <div role="alert" class="alert alert-info">
            <?php echo $sql;?>
          </div>
        <div>
            <table class="table table-hover">
                <tr>
                  <th>ชื่อ</th>
                  <th>สถานที่</th>
                  <th>พัดลม</th>
                  <th>เครื่องปรับอากาศ</th>
                  <th>โทรทัศน์</th>
                </tr>
            <?php if(!empty($data)):?>
                <?php foreach($data as $row):?>
                <?php
                    $option1 = ($row['option1'] == 1) ? 'มี' : 'ไม่มี';
                    $option2 = ($row['option2'] == 1) ? 'มี' : 'ไม่มี';
                    $option3 = ($row['option3'] == 1) ? 'มี' : 'ไม่มี';
                ?>
                  <tr>
                  <td><?php echo $row['name'];?></td>
                  <td><?php echo $row['place'];?></td>
                  <td><?php echo $option1;?></td>
                  <td><?php echo $option2;?></td>
                  <td><?php echo $option3;?></td>
                </tr>
                <?php endforeach; ?>
            <?php endif; ?>
            </table>
        </div>

    </div>

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="../../js/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="../../bootstrap/js/bootstrap.min.js"></script>
  </body>
</html>



"PHP ไม่ได้สร้างสุดยอดโปรแกรม แต่ PHP ช่วยให้งานคุณง่ายขึ้นต่างหาก"

PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม

สนใจสั่งซื้อเพียง 4,500 บาท
http://fastcoding.phpcodemania.com/

สนับสนุนค่ากาแฟผู้เขียนได้ที่

PayPal

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

แจกฟรี!! ระบบต่างๆที่พัฒนาด้วย PHP สำหรับนำไปใช้ในงานต่างๆ

       สำหรับหลายท่านที่ขอโค้ดเข้ามาทาง Inbox ของเฟซบุ๊กแฟนเพจ หรือถามถึงระบบต่างๆหลังไมค์มานั้น ส่วนใหญ่ก็มีแจกอยู่แล้วในเว็บบอร์ด ThaiCreate.Com นะครับ และด้านล่างนี้ก็เป็นระบบต่างๆที่แจกให้นำไปลองใช้ลองศึกษากันครับ

สร้างแบบฟอร์มล็อกอิน HTML + PHP

       ผมจะสร้างระบบตัวอย่างเพื่อแสดงให้เห็นการทำงานของสคริปต์ PHP ที่ใช้ในการล็อกอินอย่างง่ายๆ นะครับ โดยที่ผมจะสร้างโฟลเดอร์ใหม่ขึ้นในไดร์ฟที่เราได้กำหนดให้เป็น Directory Root สำหรับรันสคริปต์ PHP ซึ่งผมกำหนดเอาไว้ที่ D:\www ดังนั้นผมจะสร้างโฟลเดอร์ teacher_assistant ขึ้นมาใหม่จะได้พาธเป็น D:\www\teacher_assistant สำหรับการเข้าถึง จะใช้ URL ดังนี้ http://localhost/teacher_assistant หลังจากสร้างโฟลเดอร์เสร็จเรียบร้อยก็จะเริ่มกระบวนการเตรียมโครงสร้างโปรเจ็กต์ด้วยเครื่องมือช่วยเขียนโปรแกรมชื่อว่า eclipse ซึ่งดูวิธีการสร้างโปรเจ็กต์ได้จากบทความ เริ่มต้นสร้างโปรเจ็กต์ ด้วยโปรแกรม eclipse เครื่องมือเขียนโปรแกรม php ในบทความเป็นการสร้างโปรเจ็กต์ที่มีพาธเป็นโฟลเดอร์ login แต่ในที่นี้ต้องเป็นพาธให้ตรงกับโฟลเดอร์ใหม่ที่เราได้สร้างขึ้นด้วยนะครับ

PHP กับการคิดส่วนลดเป็นเปอร์เซ็น 5%, 10%, 20% ตามช่วงราคาที่กำหนด

<?php     $total_price = 1000;     $discount = 0;         if($total_price >= 500 && $total_price < 1001){         $discount = 5;     }elseif($total_price >= 1001 && $total_price <= 5000){         $discount = 10;     }elseif($total_price >= 5001){         $discount = 20;     }         $discount_bath = ($total_price*$discount)/100; ?> <pre> ซื้อสินค้าครบ 0 ถึง 499 บาท ไม่ได้ส่วนลด ซื้อสินค้าครบ 500 ถึง 1000 บาท ได้ส่วนลด 5% ซื้อสินค้าครบ 1001 ถึง 5000บาท ได้ส่วนลด 10% ซื้อสินค้าครบ 5001 บาทขึ้นไป ได้ส่วนลด 20% </pre> <h3>รวมราคาสินค้า = <?php echo number_format($total_price,2);?></h3> <h5>ส่วนลด = <?php echo $discount;?>%  (<?php echo $discount_bath;?> บาท)</h5> <h2>ราคาหลังส่วนลด = <?php echo number_format($total_price - $discount_bath,2);?>บาท</h2> "PHP ไม่ได้สร้างสุดยอดโปรแกรม แต่ PHP ช่วยให้งานคุณง่ายขึ้นต