【问题标题】:Display data from table B after select option from table A从表 A 中选择选项后显示表 B 中的数据
【发布时间】:2019-08-06 04:07:21
【问题描述】:

我想在表工厂选择选项后显示表 foom 中的一些数据。选择选项是从表工厂填充的数据。

表格设计如下图:

图片 1 = 表格工厂

图片 2 = 桌子房间

这是我仅从表工厂填充选择选项的代码:

<p>Select Factory:</p>
            <?php

            if($stmt = $link->query("SELECT * from factory")){

              echo "<select  id='exampleFormControlSelect1' name='Fac_Name' class='form-control'>";
              while ($row = $stmt->fetch_assoc()) {
              echo "<option value=$row[Fac_ID]>$row[Fac_Name]</option>";
              }
              echo "</select>";
              }else{
              echo $link->error;
              }
            ?>

如果我选择 F05,我想在 PHP 表中显示属于 F05 的所有房间,即 MR1 和 MR2。

【问题讨论】:

  • 提示:尝试使用 JOIN SELECT * from factory LEFT JOIN table2 ON factory.Fac_Name = table2.Room_Desc

标签: php jquery mysql ajax


【解决方案1】:

我喜欢推荐使用 ajax 并为执行室创建新文件。您的工厂选择有 id exampleFormControlSelect1 所以当 选择更改

时调用 ajax
$(document).on('change', '#exampleFormControlSelect1', function() {
    var selectFactory = $(this).val();
    $.ajax({
       url: 'executeRoom.php', // that is optional name
       method: 'GET',
       dataType: 'json',
       data: { facId: selectFactory },
       success: function(d) {
         var roomOptions = "";
         for(var i in d) {
           roomOptions += "<option>" + d[i].columnName + "</option>";
         }
         $("#roomSelect").html(roomOptions); // you should create select element for your room data
       }
});

executeRoom.php

<?php
$facId = $_GET['facId'];
$result = [];
$stmt = $link->prepare("SELECT * from room where Fac_ID = ?");
$stmt->execute($facId);
foreach($stmt->fetchAll() as $row) {
     $result[] = ['facId' => $row['Fac_ID'], 'facName' => $row['Fac_Name']];
}
echo json_encode($result);

【讨论】:

  • OP 正在使用 MySQLi,但您的答案使用 PDO。一般来说,选择 PDO 而不是 mysqli 是个好主意,但 OP 可能已经用 MySQLi 编写了他的代码,答案应该反映了这一点。
【解决方案2】:

这就是答案

我会用PDO connection

<?php
require_once 'connection.php';

$GetFactory = $conn->prepare("SELECT * FROM factory");
$GetFactory->execute();

echo '<form method="POST">';
echo '<select id="exampleFormControlSelect1" name="Fac_Name" class="form-control" onchange="this.form.submit()">';
foreach($GetFactory->fetchAll() as $factory){
       echo '<option value="{$factory[Fac_ID]}">{$row[Fac_Name]}</option>';
}
echo '</select>';
echo '</form>';

if(isset($_POST['Fac_Name'])){

   echo '<hr>';

   $GetRoom = $conn->prepare("SELECT * FROM room WHERE Fac_ID = ?");
   $GetRoom->execute([$_POST['Fac_Name']);
   foreach($GetRoom->fetchAll() as $room){
     echo '<p>';
     echo $room['Room_Desc'];
     echo '</p>';
   }
}

【讨论】:

  • 链接已修复,我的错
  • 谢谢。顺便说一句,我会避免链接到这个网站。那里的教程质量非常低,并且建议的编程实践非常差。如果你想要一个关于 PDO 的好教程,请查看这个网站:phpdelusions.net/pdo
  • 老实说,我拿了第一个链接,连接代码很好:)
猜你喜欢
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
相关资源
最近更新 更多