使用 PHP PDO 根据先前的选择动态更新下拉列表 [英] Dynamically update dropdown based on previous selection with PHP PDO

查看:62
本文介绍了使用 PHP PDO 根据先前的选择动态更新下拉列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

之前已经回答过这个问题,但是我再次询问有两个原因:我找不到任何使用 PDO 的资源,无论如何,我找到的所有资源都包含没有任何注释的代码或解释,这使得很难解释它们并使它们适应我的用例.

我需要能够根据上一个选择的下拉列表动态更新自身,如果我更改该选择,它应该重新更新自身,而无需提交表单或重新加载页面.

我已经用迄今为止学到的和发现的内容更新了代码,但它仍然无法正常工作.一切正常,直到第二个下拉菜单开始加载值.

HTML:

<label class="col-sm-2 form-control-label" onchange="productorInfo(this.value);">Codigo Productor (*)</label><div class="col-sm-4"><选择名称="vendor_codigo"><?php foreach ($dd_productor_result as $dd_productor_display) : ?><option value="<?= $dd_productor_display['vendedor_codigo']; ?>"><?= $dd_productor_display['vendor_codigo'];?></选项><?php endforeach;?></选择>

<label class="col-sm-2 form-control-label">Nombre (*)</label><div class="col-sm-4"><select id="ajax-vendor" name="vendor_nombre"><?php foreach ($ajax_productor_result as $dd_productor_display) : ?><option placeholder="Seleccione codigo" value="<?= $dd_productor_display['vendedor_nombre']; ?>"><?= $dd_productor_display['vendor_nombre'];?></选项><?php endforeach;?></选择>

Ajax 脚本:

function productorInfo(id) {$.ajax({类型:获取",url: "/controller/produccion/db_ajax_update.php",数据:mainid ="+ id,成功:功能(结果){$("#ajax-vendor").html(result);}});};

第一个下拉 PHP 代码:

$dd_productor = "SELECT vendedor_codigo FROM lista_productores";$productor_stmt = $pdo->prepare($dd_productor);$productor_stmt->execute();$dd_productor_result = $productor_stmt->fetchAll();

第二个下拉列表(ajax 调用):

if(isset($_GET['mainid'])){productorInfo($_GET['mainid']);$prod_value = productorInfo($_GET['mainid']);}$ajax_productor = "SELECT vendedor_nombre FROM lista_productores WHERE vendedor_codigo = {$prod_value}";$productor_stmt = $pdo->prepare($ajax_productor);$productor_stmt->execute();$ajax_productor_result = $productor_stmt->fetchAll();

解决方案

onchange 调用应该在 select 元素上而不是在标签上

<select name="vendor_codigo onchange="productorInfo(this.value)">

但我也想到你可能不太了解这个过程.页面加载时不会触发您的 ajax 调用,因此这一点:


                
            
发送“验证码”获取 | 15天全站免登陆