簡體   English   中英

如何將表中的兩列連接到僅顯示相關結果的選定列? PHP,Javascript,Jquery

[英]How to connect two columns from the table to the selected column showing only related results? Php, Javascript, Jquery

首先看一下我的數據庫。 https://imgur.com/QWgN9UA標記和模型僅對您很重要。 當用戶選擇“ AJP”標記時,我只需要向他顯示該標記的模型。 從下拉列表AJP中選擇的示例獲取模型“ PR4 125 ENDURO”,“ PR4 125 SUPERMOTOAD”和“ PR4 200”。我已經做了任何思考,但是我向用戶顯示了數據庫中的所有模型,我只需要顯示與所選標記相關的模型。 ,如果可能的話,我希望有人在不更改現有代碼的情況下為我提供幫助。

我的PHP代碼可獲取Marka

public function get_marka_data() {

    $query = $this->db->query("
        SELECT DISTINCT mo.marka
        FROM " . DB_PREFIX .  "model mo
        GROUP BY mo.marka
    ")->rows;

    $data = array_map(function($row){
        return array('value'=>$row['marka'],'label'=>$row['marka']);
    }, $query);

    if (isset($this->request->server['HTTP_ORIGIN'])) {
        $this->response->addHeader('Access-Control-Allow-Origin: ' . $this->request->server['HTTP_ORIGIN']);
        $this->response->addHeader('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
        $this->response->addHeader('Access-Control-Max-Age: 1000');
        $this->response->addHeader('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
    }
    $this->response->addHeader('Content-Type: application/json');
    $this->response->setOutput(json_encode($data));
}

我的檢索模型代碼

public function get_model_data() {
    $query = $this->db->query("
        SELECT DISTINCT mo.model
        FROM " . DB_PREFIX .  "model mo
        GROUP BY mo.model
    ")->rows;

    $data = array_map(function($row){
        return array('value'=>$row['model'],'label'=>$row['model']);
    }, $query);

    if (isset($this->request->server['HTTP_ORIGIN'])) {
        $this->response->addHeader('Access-Control-Allow-Origin: ' . $this->request->server['HTTP_ORIGIN']);
        $this->response->addHeader('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
        $this->response->addHeader('Access-Control-Max-Age: 1000');
        $this->response->addHeader('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
    }
    $this->response->addHeader('Content-Type: application/json');
    $this->response->setOutput(json_encode($data));
}

我的模板文件中的代碼用於使用Ajax提取數據

<script type="text/javascript">

   $.ajax({
    url: 'index.php?route=api/reifenmontage/get_marka_data',
   context: document.body,
   success: function(data) {
   const selectControl = $('#result');
     selectControl.html(data.map(ExtractData).join(''));
   }
   });

   function ExtractData(item) {
 return ` <option value="${item.value}">${item.label}</option>`;
}

</script>
<script type="text/javascript">

$.ajax({
url: 'index.php?route=api/reifenmontage/get_model_data',
context: document.body,
success: function(data) {
     const selectControl = $('#result2');
     selectControl.html(data.map(ExtractData).join(''));
   }
});

 </script>

最后是我的模板html

       <div id="additionalRow"  class="row termin_row">
          <div class="col-sm-4 col-xs-12">
            <div class="row"><label>Marke und model</label></div>
          </div>
              <div class="col-xs-12 col-sm-3" style="margin-right:30px;">
                <div class="row">
                 <select class="form-control"  id="result">
                  </select>
             </div>
         </div>
         <div class="col-xs-12 col-sm-4">
             <div class="row">
               <select class="form-control"  id="result2">
             </select>
          </div>
               </div> 
        </div>

問題出在查詢中,而不是GROUP BY ...,請使用WHERE m.marka ='',將marka傳遞給腳本。

首先將標記渲染到頁面上,選擇了某些標記后,將請求發送到服務器(首先將第一個參數添加到函數get_marka_data($ marka)中)

SELECT DISTINCT mo.marka
FROM " . DB_PREFIX .  "model mo
WHERE mo.marka = " . $marka

當您獲得響應時,將其下拉到頁面

別忘了驗證!!

暫無
暫無

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

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