【发布时间】:2012-09-03 17:32:59
【问题描述】:
我不是(我确信您会在下面注意到)程序员或编码员。我编写网络文档手册。
也就是说,我确实对 HTML、php、css 等有一定的了解。但是接下来发生的事情让我彻底崩溃了:
我正在尝试为我的一个处于绑定状态的朋友构建一个站点,尽管其他一切都很好,但我确实必须将最终用户重定向到专门为他们的社区构建的网页。
我需要的是一种让最终用户单击下拉菜单的方法,该下拉菜单列出(通过 MySQL 查询)记录可用的所有状态,当他们在第一个菜单中选择一个选项时,第二个菜单由该州内的社区(同样通过 MySQL)填充。
虽然我已经在互联网上搜索了可能有用的东西,但我发现我根本不具备编码逻辑的能力。但是,我确实找到了一个站点,该站点显示了我正在尝试做的事情的基本版本 (see here),但我似乎无法让它与 MySQL 一起使用。这是我到目前为止的位置:
脚本--
<script>
function swapOptions(ArrayName) {
var ExSelect = document.theForm.sites;
var theArray = eval(ArrayName);
setOptionText(ExSelect, theArray);
}
function setOptionText(theSelect, theArray) {
for (loop = 0; loop < theSelect.options.length; loop++) {
theSelect.options[loop].text = theArray[loop];
}
}
</script>
和 HTML --
<form name="theForm">
<select name="chooseCat" onchange="swapOptions(this.options[selectedIndex].text);">
<option value="">Please select your state ...</option>'
<?php
$query = mysql_query("SELECT DISTINCT state FROM sites ORDER BY state")
or die(mysql_error());
while ($result = mysql_fetch_assoc($query)) {
$stateChoice = $result['state'];
echo '<option value="';
echo "$stateChoice";
echo '">';
echo "$stateChoice";
echo '</option>';
echo '<br />';
}
?>
</select>
<select name="sites" style="min-width: 100px;" onchange="location.href='reports.php?page=' + this.options[this.selectedIndex].value;">
<?php
$query = mysql_query("SELECT * FROM sites")
or die(mysql_error());
while ($result = mysql_fetch_assoc($query)) {
echo '<option value="';
echo '">';
echo $result['longname'];
echo '</option>';
echo '<br />';
}
?>
</select>
</form>
这会返回两个下拉菜单。第一个是我对可用状态的查询结果,在下拉列表中按字母顺序列出。第二个是列出的所有站点的长名称,但针对表中的所有站点,而不仅仅是某个州(刚刚选择的州)内的站点。
最后,下拉菜单 1 应填充所有可用状态。一旦用户选择了他们的状态,这应该会触发下拉列表 2 的人口以及他们选择的状态内的所有社区。在下拉列表 2 中单击社区选择后,它应该将用户的浏览器重定向到,例如,http://www.webpage.com/reports.php?page=communityNameGoesHere ...
非常感谢您在这里的任何建议:)
【问题讨论】:
-
既然2次就够了,为什么还要使用11次
echo?你可以使用concatenation。 -
看起来您必须在选择下拉 1 上的选项时进行 ajax 调用,或者单独预加载所有状态的所有可能的社区列表,并在选项时显示/隐藏它们在第一个下拉列表中被选中。或者,好吧,每次选择一个选项时重新加载整个页面,但您可能不想这样做:)
-
嗨乔斯林,非常感谢您的评论。至于重复使用echo,你是绝对正确的。我这里只有这样,因为它正在进行中,一旦完成,我一定会清理并收紧它。再次感谢:)
-
嗨,马恩,嗯……阿贾克斯?!我正在研究它,但我认为这有点过头了。我认为你可能是对的,它是最好的选择。我只是不确定我能不能做到。非常感谢,我一定会更多地研究 Ajax!
-
将所有
echos 替换为echo "<option value=\"$stateChoice\">$stateChoice</option><br />";。
标签: php javascript mysql dynamic drop-down-menu