先看看我的数据库。https://imgur.com/QWgN9UA Marka 和型号只对您很重要。当用户选择“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 传递给脚本。
First render the markas to the page, when some marka is selected send the request to the server (first add first parameter to the function get_marka_data($marka)) with this query
SELECT DISTINCT mo.marka
FROM " . DB_PREFIX . "model mo
WHERE mo.marka = " . $marka
当您收到响应时,将其渲染到某个下拉列表中的页面
别忘了验证!!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句