Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > รบกวนสอบถามเรื่อง การค้นหาข้อมูล 2 เงื่อนไขจาก DB มาแสดงหน่อยครับ



 

รบกวนสอบถามเรื่อง การค้นหาข้อมูล 2 เงื่อนไขจาก DB มาแสดงหน่อยครับ

 



Topic : 136957



โพสกระทู้ ( 8 )
บทความ ( 0 )



สถานะออฟไลน์




ตัวอย่าง

ต้องการให้ Select/List ข้อมูลจาก DB
1. เลือกเขตแล้วจะแสดงข้อมูลเฉพาะเกณฑ์ที่มีอยู่ในเขตนั้น
2. ปุ่มค้นหา echo ข้อมูลจาก DB ที่มีข้อมูลเขตกับเกณฑ์ที่เราเลือกไว้ครับ


#รบกวนด้วยครับ #มือใหม่
#ขอบคุณครับ



Tag : PHP, HTML5, Ajax







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2023-02-24 10:20:50 By : nuy_bapalung View : 527 Reply : 9
 

 
ไม่มีส่วนที่ทำไปแล้วเหรอ งั้นลองศึกษาตัวอย่าง แล้วไปประยุกต์ดู
(ห้ามคัดลอกวางอย่างเดียว เพราะมี bug ต้องปรับให้เข้ากับแวดล้อมของตน)

Code (HTML)
<form id="search-form">
  <select id="menu1" name="menu1">
    <option value="">-- Select an option --</option>
    <option value="option1">Option 1</option>
    <option value="option2">Option 2</option>
    <option value="option3">Option 3</option>
  </select>
  <select id="menu2" name="menu2">
    <option value="">-- Select an option --</option>
  </select>
  <button type="submit" id="search-btn">Search</button>
</form>

<div id="search-results"></div>


Code (jQuery)
$(document).ready(function() {
  // Update menu2 เมื่อเลือก menu1
  $('#menu1').on('change', function() {
    var selectedOption1 = $(this).val();
    $.ajax({
      type: 'POST',
      url: 'get-options.php',
      data: {menu1: selectedOption1},
      success: function(options) {
        $('#menu2').html(options);  // ลองปรับเล่นดู เพราะขึ้นอยู่กับการออกแบบ HTML
      }
    });
  });

  // Search ข้อมูลมาแสดงจาก database เมื่อคลิกปุ่ม
  $('#search-btn').on('click', function(e) {
    e.preventDefault();
    var selectedOption2 = $('#menu2').val();
    $.ajax({
      type: 'POST',
      url: 'search.php',
      data: {menu2: selectedOption2},
      success: function(results) {
        $('#search-results').html(results);
      }
    });
  });
});


ฝั่ง server แสดง menu2 ตาม menu1 (PHP)
<?php
// เชื่อมต่อ DB
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

$conn = new mysqli($servername, $username, $password, $dbname);

// ตรวจสอบการเชื่อมต่อ DB
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

// รับค่าจาก menu1
$selectedOption1 = $_POST['menu1'];

// ดึงรายการเพื่อแสดงใน menu2 จาก DB (ปรับ query ให้สอดคล้องกับการออกแบบ DB)
$sql = "SELECT * FROM options WHERE menu1 = '$selectedOption1'";
$result = $conn->query($sql);

$options = '<option value="">-- Select an option --</option>';

if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    $value = $row['value'];
    $label = $row['label'];
    $options .= "<option value='$value'>$label</option>";
  }
}

// ตัดการเชื่อมต่อ DB
$conn->close();

// ตืนค่ารายการสำหรับ menu2 กลับไปยัง client (JS)
echo $options;
?>



ฝั่ง server รับปุ่ม search (PHP)
<?php
// ต่อ DB
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

$conn = new mysqli($servername, $username, $password, $dbname);

// ตรวจการเชื่อมต่อ DB
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

// รับค่าที่ user เลือกจาก menu2
$selectedOption2 = $_POST['menu2'];

// ค้นหาข้อมูลจาก DB ตามที่เลือกใน menu2
$sql = "SELECT * FROM data WHERE menu2 = '$selectedOption2'";
$result = $conn->query($sql);

// แสดงผลลัพธ์ (หรือ จะส่งเป็น response กลับไปยัง client ก็ได้)
if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {
    echo "<p>" . $row['data'] . "</p>";
  }
} else {
  echo "<p>No results found.</p>";
}

// ปิดการเชื่อมต่อ DB
$conn->close();
?>








แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-02-24 12:05:26 By : 009
 


 

No. 2



โพสกระทู้ ( 8 )
บทความ ( 0 )



สถานะออฟไลน์


Code (PHP)
<form id="search-form">
  <select id="menu1" name="menu1">
    <option value="">-- Select an option --</option>
    <option value="option1">Option 1</option>
    <option value="option2">Option 2</option>
    <option value="option3">Option 3</option>
  </select>
  <select id="menu2" name="menu2">
    <option value="">-- Select an option --</option>
  </select>
  <button type="submit" id="search-btn">Search</button>
</form>

<div id="search-results"></div>


สอบถามครับ โค๊ดนี้มันเพิ่มข้อมูลเองครับไม่ใช้ดึง DB มาแสดงใช้ไหมครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-02-24 15:10:00 By : nuy_bapalung
 

 
ตอบความคิดเห็นที่ : 2 เขียนโดย : nuy_bapalung เมื่อวันที่ 2023-02-24 15:10:00
รายละเอียดของการตอบ ::
menu1 คือ static content สังเกต มี option ครบตั้งแต่แรก
menu2 เรียกว่า dynamic content สังเกตไม่มี option แต่จะรอดึงจากฐานข้อมูลตาม click event ด้วยเทคโนโลยีที่เรียกว่า AJAX

แนะนำศึกษาพื้นฐาน HTML/JS(AJAX) ประกอบการทำความเข้าใจ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-02-24 15:24:44 By : 009
 


 

No. 4



โพสกระทู้ ( 8 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : 009 เมื่อวันที่ 2023-02-24 15:24:44
รายละเอียดของการตอบ ::
เดี่ยวลองศึกษาข้อมูลดูครับ
ถ้าไม่ได้หรือติดขัดรบกวนสอบถามอีกทีครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-02-24 15:37:11 By : nuy_bapalung
 


 

No. 5



โพสกระทู้ ( 8 )
บทความ ( 0 )



สถานะออฟไลน์


สอบถามผู้รู้ครับ

1. เกณฑ์ อ. 1 - ป. 6 มี 2 รร. อยากให้หน้าแสดงแค่ 1 เกณฑ์
2. กด Search แสดง รร. ที่มีเกณฑ์ซ้ำกันออกมา
3. ผมต้องไปแก้ตรงไหนครับ


หน้า Index
index
หน้าแสดงผล
แสดงผล
Db
แสดงผล db

index
<?php include('condb.php');?>


<!DOCTYPE html>
<html lang="en">
<head>
  <title>ฐานข้อมูลโรงเรียนเรียนร่วม</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<?php
    $sql_amphures = "SELECT * FROM amphures";
    $query = mysqli_query($con, $sql_amphures);
?>

<div class="container">
  <h2>ฐานข้อมูลโรงเรียนเรียนร่วม</h2>
  <p></p>
  <form  action="index2.php" method="POST">
    <div class="form-group">
      
    <label for="sel1">เขต:</label>
      <select class="form-control" name="Ref_dist_id" id="amphures">
            <option value="" selected disabled>-กรุณาเลือกเขต-</option>
             <?php foreach ($query as $value) { ?>
            <option value="<?=$value['id']?>"><?=$value['name_th']?></option>
            <?php } ?>
      </select>
      <br>

      <label for="sel2">เกณฑ์การค้นหา:</label>
      <select class="form-control" name="Ref_subdist_id" id="districts">
      </select>
    
      <button type="submit" id="search-btn">Search</button>
</form>
       
    </div>
  </form>
</div>
</body>
</html>
<?php include('script.php');?>



index2
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta content="width=device-width, initial-scale=1.0" name="viewport">
  <title>ฐานข้อมูลโรงเรียนเรียนร่วม</title>
  <meta content="" name="description">
  <meta content="" name="keywords">

  <!-- Favicons -->
  <link rel="icon" type="image/png" sizes="16x16" href="https://converticon.com/indir/8a5d26a4b431c.png.ico"/>

  <!-- Google Fonts -->
  <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Raleway:300,300i,400,400i,600,600i,700,700i" rel="stylesheet">

  <!-- Vendor CSS Files -->
  <link href="assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  <link href="assets/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet">

  <!-- Template Main CSS File -->
  <link href="assets/css/style.css" rel="stylesheet">

  <!-- =======================================================
  * Template Name: ComingSoon - v4.9.0
  * Template URL: https://bootstrapmade.com/comingsoon-free-html-bootstrap-template/
  * Author: BootstrapMade.com
  * License: https://bootstrapmade.com/license/
  ======================================================== -->
</head>

<body>
  <?php include 'condb.php';?>
 
<?php
 
      $id = $_POST['Ref_subdist_id'];
      $sql = "SELECT * FROM view_criterion WHERE id='$id'";
      $query = mysqli_query($con, $sql);
 
      foreach ($query as $Myscholl) {
       }
   
?> 
  
  <h2>ตรารางแสดงข้อมูล</h2>
  <div class="container">
    <table class="table table-striped mt-4">
      <thead>
        <tr class="bg-primarry text-whith"> 
    <th>เขต</th>
    <th>ชื่อโรงเรียน</th>
    <th>เกณฑ์</th>
    <th>เบอร์ติดต่อ</th>
    <th>Link</th>  
  </tr>
      </thead>
      <tbody>
        <tr>
    <td> <?php  echo $Myscholl['amphure_name'] ;  ?>  </td>
    <td> <?php  echo $Myscholl['school_name'] ;  ?>  </td>
    <td> <?php  echo $Myscholl['name_th'] ;?>     </td>
    <td> <?php  echo $Myscholl['tel'] ;?>     </td>
    <td> <?php  echo $Myscholl['web_url'] ;?>     </td>
  </tr>  
        </tr>        
      </tbody>
    </table>
  </div>    
</div>

 
<br>
<br>
<br>
<center><input type="button" class="btn" value="ย้อนกลับ" onclick='javascript:window.history.back()'></center>

</body>
</html>

<?php
	mysqli_close($con);
?>


Code (JavaScript)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script type="text/javascript">

  $('#amphures').change(function() {
    var id_amphures = $(this).val();

      $.ajax({
      type: "POST",
      url: "ajax_db.php",
      data: {id:id_amphures,function:'amphures'},
      success: function(data){
          $('#districts').html(data);  
      }
    });
  });

   $('#districts').change(function() {
    var id_districts= $(this).val();

      $.ajax({
      type: "POST",
      url: "ajax_db.php",
      data: {id:id_districts,function:'districts'},
      success: function(data){
          $('#zip_code').val(data)
      }
    });
  
  });
</script>



Code (JavaScript)
<?php
 include('condb.php');


if (isset($_POST['function']) && $_POST['function'] == 'amphures') {
    $id = $_POST['id'];
    $sql = "SELECT * FROM criterion WHERE amphure_id='$id'";
    $query = mysqli_query($con, $sql);
    echo '<option value="" selected disabled>-กรุณาเลือกเกณฑ์-</option>';
    foreach ($query as $value2) {
      echo '<option value="'.$value2['id'].'">'.$value2['name_th']. ' [ ' .$value2['school_name']. ' ]' . '</option>';
      
    }
  }

?>





#รบกวนด้วยครับ #มือใหม่
#ขอบคุณครับ


ประวัติการแก้ไข
2023-04-05 14:07:18
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-04-05 14:00:49 By : nuy_bapalung
 


 
เนื่องจากไม่รู้ว่าคุณออกแบบ DB ไว้อย่างไร แต่ลองแก้ประมาณนี้

AJAX server page สำหรับแสดง select option ที่สอง
<?php
 include('condb.php');

if (isset($_POST['function']) && $_POST['function'] == 'amphures') {
    $id = $_POST['id'];
    $sql = "SELECT DISTINCT name_th, school_name FROM criterion WHERE amphure_id='$id'";  // ใส่ DISTINCT
    $query = mysqli_query($con, $sql);
    echo '<option value="" selected disabled>-กรุณาเลือกเกณฑ์-</option>';
    foreach ($query as $value2) {
      echo '<option value="'.$value2['name_th'].'">'.$value2['name_th']. ' [ ' .$value2['school_name']. ' ]' . '</option>';  // ส่งค่า name_th แทน id
    }
}
?>


index2.php
$name = $_POST['Ref_subdist_id'];
$sql = "SELECT * FROM view_criterion WHERE name_th='$name'";  // ใช้ name_th แทน id

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-04-05 20:07:39 By : 009
 


 
ตอบความคิดเห็นที่ : 6 เขียนโดย : 009 เมื่อวันที่ 2023-04-05 20:07:39
รายละเอียดของการตอบ ::
ขออภัย รูปพึ่งแสดง
จาก DB แก้ตามที่ผมบอกถูกแล้ว
คือ ส่งค่า และเงื่อนไข query เป็น name_th

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-04-05 20:11:04 By : 009
 


 

No. 8



โพสกระทู้ ( 8 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : 009 เมื่อวันที่ 2023-04-05 20:07:39
รายละเอียดของการตอบ ::
จากที่ได้ทดสอบ
1. ลองแก้ตามแล้วยังไม่ได้ครับ เลือก อ.1-ป.6 มันไปจับค่าแปลก ๆ ครับ
2. ผมต้องไปแก้อะไรใน DB ไหมครับ
3. สมมุตผมเลือกคลองเตย อยากให้มันโชว์ รร. ที่อยู่ในเกณฑ์ อ.1-ป.6 ทั้งหมดของเขตคลองเตยเลยครับ


หลังจากแก้แล่ว
แก้ตาม1
]แก้ตาม2


#ขอบคุณครับ
#รบกวนด้วยครับ #มือใหม่
#ขอบคุณครับ


ประวัติการแก้ไข
2023-04-07 10:08:06
2023-04-07 10:09:20
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-04-07 10:07:16 By : nuy_bapalung
 


 
วิธีหาเหตุ ลองรัน query ใน phpmyadmin ว่าตรงตามต้องการไหม
ค่อยแก้ใน PHP

Code (SQL)
SELECT * FROM view_criterion WHERE name_th='$name' AND amphure_id='$amphure_id' 


แต่ใน PHP ต้องรับ $amphure_id เข้ามาก่อน




ระบุจุดผิดพลาดไม่ได้ เพราะข้อควา่มกับรูปผลลัพธ์ไม่สอดคล้องกัน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2023-04-07 10:59:00 By : 009
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : รบกวนสอบถามเรื่อง การค้นหาข้อมูล 2 เงื่อนไขจาก DB มาแสดงหน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่