簡體   English   中英

從選擇框中使用值數組查詢MySQL

[英]Query MySQL with array of values from select box

使用一個簡單的PHP表單,我試圖生成一個報告,僅顯示在動態填充的選擇框中選擇的值。

   <div id="container">
      <div>
        <form action="report.php" method="post">
            <label>Select Devices: </label>
            <select name="devices[]" multiple>
                <?php
                    require 'config/db.php';
                    $pdo = Database::connect();
                    $sql = 'SELECT alarm_device_description FROM alarm_device';
                    foreach($pdo->query($sql) as $row) {
                        echo '<option>'. $row['alarm_device_description'] . '</option>';
                    }
                    Database::disconnect();
                ?>
            </select>
            <button type="submit">Get Report</button>
        </form>
      </div>
    </div>

然后我有一個php文件:

<div id="container">
  <div>
    <table>
      <thead>
        <tr>
          <th>Date</th>
          <th>Alarm Device Description</th>
        </tr>
      </thead>
      <tbody>
        <?php
          require 'config/db.php';
          $pdo = Database::connect();

          var_dump($_POST);
          echo '<hr />';

          $devices = $_POST['devices'];
          echo $devices . '<hr />';

          $sql = 'SELECT date, alarm_device_description
                  FROM alarm_log
                  NATURAL JOIN alarm_device
                  ORDER BY date ASC';

          print_r($_POST['devices']);
          echo '<hr />';

          foreach ($pdo->query($sql) as $row) {
            echo '<tr>';
            echo '<td>'. $row['date'] . '</td>';
            echo '<td>'. $row['alarm_device_description'] . '</td>';
            echo '</tr>';
          }
          Database::disconnect();
        ?>
      </tbody>
    </table>
  </div>
</div>

默認情況下,該報告應生成所有alarm_devices,並且工作正常。 但是,我需要能夠選擇例如:iPhone 5和Nexus,並僅顯示那些結果。

我試圖將值作為一個數組拉入,在我的reports.php頁面上的POST測試中顯示該數組-它似乎確實抓住了所選值。

$ devices = $ _POST ['devices']只產生一個空數組。

我需要弄清楚如何修改查詢以發布選定的值以及默認情況下的所有值。

預先感謝,我希望這是有道理的。 我是前端開發人員,不太熟悉PHP / MySQL

<option> 應該具有將傳遞給服務器的value屬性:

例如:

<select name="select_name">
    <option value="2">Text 2</option>
</select>

在服務器端,選擇“ Text 2選項后,它將是:

echo $_POST['select_name'];    // 2

如果有multiple

<select name="select_name" multiple>
    <option value="2">Text 2</option>
    <option value="3">Text 3</option>
</select>

選擇兩個選項后,在服務器端將是:

print_r $_POST['select_name'];    // array(2,3);
print_r $_POST['select_name'];    // array(2); if you select one option

在選擇alarm_device_description字段時,您可以嘗試:

foreach($pdo->query($sql) as $row) {
    echo '<option value="' . $row['alarm_device_description'] . '">'. $row['alarm_device_description'] . '</option>';
}

您在生成選擇框時缺少value屬性。

更改

echo '<option>'. $row['alarm_device_description'] . '</option>';

echo '<option value="' . $row['alarm_device_description'] . '">' . $row['alarm_device_description'] . '</option>';

這樣,您的$ _POST ['devices']數組中將填充項目

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM