使用一个php文件基于第一个下拉列表的第二个下拉列表

时间:2013-03-31 16:22:57

标签: php mysql forms

好的,我做了第一个成功的SQL查询,在PHP中生成了一个下拉框! (是的,我仍然是一个大菜鸟)

所以我的下一个问题......

如果我点击了选择按钮,我必须创建一个新页面,还是可以根据第一个列表的提交在同一页面上生成第二个下拉框?

我看到了这个:response to similar question

但我仍然不确定形式动作和方法。保持自我?我需要/我应该使用2个单独的表格吗? (我还没准备好解决AJAX问题,并且还没有准备好解决Java问题,所以请保持这些选项不受限制:))或者我应该转到第二个文件。

如果能够做到,你可以解释每种表格中使用的表格动作和方法吗?

2 个答案:

答案 0 :(得分:1)

我更喜欢通过Ajax和JQuery来做这件事:

function getClassList(elem)
{
    var contentRequests, contentarr;  // The variable that makes Ajax possible!
    try
    {
// Opera 8.0+, Firefox, Safari
        contentRequests = new XMLHttpRequest();
    } 
    catch (e)
    {
// Internet Explorer Browsers
        try
        {
            contentRequests = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (e) 
        {
            try
            {
                contentRequests = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (e)
            {
// Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }
// Create a function that will receive data sent from the server
        contentRequests.onreadystatechange = function()
        {
            if(contentRequests.readyState == 4&& contentRequests.status==200)
            {


                document.getElementById(elem).innerHTML = contentRequests.responseText;

            }
        }

        var urltofetch="index.php?methodname=getclasses"

        contentRequests.open("GET", urltofetch, true);
        contentRequests.send(null);


}


function getStudentList(classelem,elem)
{

   var classToFetch =  classelem + " option:selected";

   var contentRequests, contentarr;  // The variable that makes Ajax possible!
    try
    {
// Opera 8.0+, Firefox, Safari
        contentRequests = new XMLHttpRequest();
    } 
    catch (e)
    {
// Internet Explorer Browsers
        try
        {
            contentRequests = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (e) 
        {
            try
            {
                contentRequests = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (e)
            {
// Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }
// Create a function that will receive data sent from the server
        contentRequests.onreadystatechange = function()
        {
            if(contentRequests.readyState == 4&& contentRequests.status==200)
            {


                document.getElementById(elem).innerHTML = contentRequests.responseText;

            }
        }
        var classname = $(classToFetch).text();
        alert(classname);
        var urltofetch="index.php?methodname=getstudents&cname="+classname

        contentRequests.open("GET", urltofetch, true);
        contentRequests.send(null);

}

答案 1 :(得分:1)

如果您尚未准备好使用AJAX或Javascript,那么您需要添加第二个PHP页面,该页面将从第一个下拉框中处理用户的选择并显示相应的第二个下拉列表。

如果您对这一切都不熟悉,那么我建议您开始时保持简单!提交表单和显示新页面是最基本的方式。

因此,在您的第一页HTML中,您需要...

<form action="second_page.php" method="post">
<select name="selection"> ... your drop-down code goes here ... </select>
<button type="submit">Next</button>
</form>

然后在second_page.php中你需要......

$selection = $_POST['selection']; // The variable $selection holds the user's selection

然后,您可以根据$ selection的值输出第二页。