第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 PHP 在 assoc 數(shù)組中使用按鈕名稱篩選表

使用 PHP 在 assoc 數(shù)組中使用按鈕名稱篩選表

PHP
炎炎設(shè)計 2022-09-25 20:45:14
我想要實現(xiàn)的目標(biāo)我目前得到了一個巨大的集合,其中包含超過一千行和10 +列,解析為帶有PDO的表。之后有必要過濾表格,我決定使用PHP來執(zhí)行此操作。我目前的方法工作正常,但我不確定它是否在性能方面效率較低,因為有很多語句使代碼看起來很混亂。else if我目前的方法我得到了一個“過濾表”HTML按鈕,它打開了一個彈出窗口,其中包含表單中的幾個按鈕(15個以上)。每個按鈕名稱都有自己的篩選器查詢。然后,我檢查單擊了哪個按鈕,然后將篩選器查詢附加到我的實際SQL中,以解析整個表。我的代碼菲律賓比索:if (isset($_POST['filter_type_pc'])) {    $newFilter = "WHERE type LIKE 'PC%' ORDER BY time_altered DESC";} else if (isset($_POST['filter_type_mac'])) {    $newFilter = "WHERE type LIKE 'Mac%' ORDER BY time_altered DESC";} else if (isset($_POST['filter_type_linux'])) {    $newFilter = "WHERE type LIKE 'Linux%' ORDER BY ip DESC";    //...    //there are more 'else if' statements, but I've excluded them to maintain a clean question    //...} else {    $newFilter = "ORDER BY time_altered DESC";}$sql = "SELECT * FROM myTable $newFilter";$stmt = $conn->prepare($sql);$stmt->execute();$result = $stmt->fetchAll();值得注意的是(?),過濾器查詢可能完全不同。我不僅使用“位置”或“LIKE”子句。網(wǎng)頁:<form id="filterTable" name="filter" method="POST" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">    <h5>Type of device</h5>    <button type="submit" class="btn btn-light filter_button" name="filter_type_pc">PC</button>    <button type="submit" class="btn btn-light filter_button" name="filter_type_mac">Mac</button>    <button type="submit" class="btn btn-light filter_button" name="filter_type_linux">Linux</button></form>我的問題為了進(jìn)一步澄清,我將問一個問題。如果有的話,什么會是更好,更清潔的方法,而不是這種混亂?我有興趣聽聽你的建議,因為我想從中學(xué)習(xí)并從已經(jīng)工作的代碼中改進(jìn)!else if
查看完整描述

1 回答

?
GCT1015

TA貢獻(xiàn)1827條經(jīng)驗 獲得超4個贊

回答我自己的問題,以便任何像您這樣偶然發(fā)現(xiàn)這篇文章的未來訪問者都可以學(xué)習(xí)到這個問題的簡單化解決方案。


$filters = array(

    "filter_type_pc" => "My SQL query",

    "filter_type_mac" => "My SQL query",

    "filter_type_linux" => "My SQL query"

);


if (!empty($_POST)) {

    $arrayMatch = array_intersect_key($_POST, $filters);

    foreach(array_keys($arrayMatch) as $filterName) {

        $newFilter = $filters[$filterName];

    }

} else {

    $newFilter = "ORDER BY time_altered DESC";

};

讓我們來分解一下:

  • 首先,我們檢查請求是否為空,因為我們無法知道使用PHP在DOM中單擊了哪個過濾器按鈕,因此我們將其留空。$_POST

  • 因為我們檢查了整個超級全局變量,所以它會在請求中采取任何東西,如果你有幾個請求,我們通過以下方式解決這個問題:$_POST

  1. 使用匹配鍵和數(shù)組。array_intersect_key$_POST$filters

  2. 創(chuàng)建一個僅包含匹配結(jié)果的新數(shù)組。$arrayMatch

  • 然后,我們用 和 遍歷新創(chuàng)建的數(shù)組的匹配鍵,然后將鍵命名為 。foreach()array_keys()$filterName

  • 最后,我們可以通過使用新變量將數(shù)組的值定義為數(shù)組的值來獲得數(shù)組的值。$newFilter$filters$filterName

編輯:

我想出了一個比上面更好的解決方案,而上面的解決方案按預(yù)期工作 - 它可能會與前面提到的未來實現(xiàn)發(fā)生沖突。這將解決此問題,并且僅檢查包含數(shù)組中鍵的請求。POST

$filters = array(

    "filter_type_pc" => "My SQL query",

    "filter_type_mac" => "My SQL query",

    "filter_type_linux" => "My SQL query"

);


$newFilter = "ORDER BY time_altered DESC";

$arrayMatch = array_intersect_key($_POST, $filters);


foreach(array_keys($arrayMatch) as $filterName) {

    if (isset($_POST[$filterName])) {

        $newFilter = $filters[$filterName];

    }

};


查看完整回答
反對 回復(fù) 2022-09-25
  • 1 回答
  • 0 關(guān)注
  • 119 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號