下拉列表解决方案?

时间:2011-08-23 06:44:41

标签: php javascript html ajax drop-down-menu

对于提出一个基本问题,我是一名新人。

我有一个php页面 - 一个'创建新项目'页面

有一些简单的数据,如姓名,截止日期等......

但是根据项目的类型,我在这个表格中有4个不同的结尾(不同的页面?),我找不到它的解决方案。

这是我的代码:

<h1>New Project</h1>
<form name="newpr">
New project name:<input type="text" placeholder="new project name..."><br />
New project end date:<input type="text" placeholder="date..."><br />
New project type:
<select name="menu" onChange="location=document.newpr.menu.options[document.newpr.menu.selectedIndex].value;" >
<?php 
$listdata = mysql_query("SELECT * FROM lists WHERE tag='prtype' ORDER BY listing ASC");
while($listresult = mysql_fetch_array($listdata))
{
if ($listresult["listing"]!="...") $link=$listresult["value"].".php";
else $link="";

echo "<option value='".$link."'>".$listresult["listing"]."</option> ";
}
?>
</select>
</form>

正如您所看到的,选择列表来自Mysql,我希望在表单下方可以打开page1.php或page2.php等用户选择...

提前致谢

安德拉什

可能是ajax问题......

2 个答案:

答案 0 :(得分:1)

我会通过以下方式解决这个问题

<!-- using jQuery -->

<h1>New Project</h1>

<form method="" action="post">
    New project name:<input type="text" placeholder="new project name..."><br/>
    New project end date:<input type="text" placeholder="date..."><br/>
    New project type:
    <select name="menu">
        <?php 
        $listdata = mysql_query("SELECT * FROM lists WHERE tag='prtype' ORDER BY listing ASC");
        while($listresult = mysql_fetch_array($listdata))
        {
            $link = '';
            if($listresult['listing'] != '...') {
                $links = $listresult['value'] . ".php";
                echo "<option value='$link'>${listresult['listing']}</option>";
            }
        }
        ?>
    </select>

    <div id="page">
        <!-- container for loaded page -->
    </div>

    <script type="text/javascript">
        $("select[name=menu]").change(function() {
            var url = $("option:selected", this).val();
            // Load a page to the container
            $("#page").load(url);
        });
    </script>
</form>

使用jQuery我在选择框上添加了更改处理程序,如果它已更改,则通过ajax将页面加载到div容器。

让我给你和建议 - 尽量避免混合代码和HTML。这导致了进一步开发和维护的困难。

答案 1 :(得分:0)

您想向您的php页面发出HTTP请求
Checkout
http://mootools.net/docs/core/Request/Request.HTML
http://mootools.net/docs/more/Request/Request.JSONP

在您的请求中侦听回调,然后将返回的数据作为元素注入DOM。
Mootools是我的首选武器,但Jquery等都具有相同的功能。
call php page under Javascript function这个问题与你的问题非常相似。