我想根据使用PHP的第一个下拉列表进行下拉列表。我此刻已经到了这里,但它不起作用。
我正在尝试让用户首先从第一个下拉列表中选择一个值。按“执行”按钮。然后出现第二个下拉列表。
当按下第二个GO按钮(从下拉列表2)时,必须显示包含数据的表格。这就是名为get_latest_prices的函数
function show_products( $attrs )
{
global $wpdb;
$products = get_products();
$type = get_types();
$html .= get_cluetip_js();
创建第一个下拉列表:
$html.="<form>
<select name='type' id='type' autocomplete='off'>
<option value=''>--Select Type--</option>
";
从数据库获取数据 if($ _GET ['type']) $ selected_type = $ wpdb-&gt; escape($ _ GET ['type']);
foreach($type as $typ)
{
if($typ['type']==$selected_type)
$selected = ' selected ';
else
$selected = ' ';
$typ['type'] = trim( $typ['type'] );
if( !$typ['type'] )
continue;
显示所选的下拉菜单行:
$html.="<option $selected value='{$typ['type']}'>{$typ['type']} </option>\r\n";
}
$html.="
</select>
<br/>
<input type='submit' value='Go'>
</form>";
$html.= '<script type="text/javascript">
$(function () {
$("#product").ufd({log:true});
$("a.deeplink").cluetip();
});
</script>
';
选择行并提交表单后,再添加第二个下拉菜单:
if($selected_type)
{
$html.="
</select>
<br/>
<select name='product' id='product' autocomplete='off'>
<option value=''>--Select Product--</option>
";
从数据库获取第二个下拉列表中的数据。 $ products变量选择另一个将查询产品标题和cat的函数。并在第一个下拉列表中选择类型。
if( $_GET['product'] )
$selected_product = $wpdb->escape($_GET['product']);
foreach($products as $prod)
{
if($prod['ID']==$selected_product)
$selected = ' selected ';
else
$selected = ' ';
$prod['Title'] = trim( $prod['Title'] );
$prod['Cat'] = trim( $prod['Cat'] );
if( !$prod['Title'] || !$prod['Cat'] )
continue;
$html.="<option $selected value='{$prod['ID']}'>{$prod['Title']} - ({$prod['Cat']})</option>\r\n";
}
$html.="
</select>
<br/><input type='submit' value='Go'>
</form>";
$html.= '<script type="text/javascript">
$(function () {
$("#product").ufd({log:true});
$("a.deeplink").cluetip();
});
</script>
';
// return $html;
提交第二个表单时,会调用一个名为get_latest_prices的函数。此函数使用下拉2中选择的数据绘制一个包含数据的表。
if($selected_product)
{
$html.=get_latest_prices($selected_product);
}
return $html;
}
return $html;
}
当从第二个表单提交go按钮时没有任何反应。没有页面加载,没有刷新,没有错误。有任何想法吗?转换为AJAX是一种选择,但需要在整个脚本中进行大量的返工。