Php 动态传递变量

Php 动态传递变量,php,ajax,Php,Ajax,我试图实现的是在第一个下拉框中的选择之后填充第二个下拉框 我不太熟悉AJAX,我相信我需要使用它来实现这一点 到目前为止,我有以下PHP代码 <select name="category"> <?php $q = $admindb->getParentCategories(); while($row=mysql_fetch_assoc($q)){ $title=$row['title']; $catid=$row[

我试图实现的是在第一个下拉框中的选择之后填充第二个下拉框

我不太熟悉AJAX,我相信我需要使用它来实现这一点

到目前为止,我有以下PHP代码

<select name="category">
    <?php 
    $q = $admindb->getParentCategories();
    while($row=mysql_fetch_assoc($q)){
        $title=$row['title'];
        $catid=$row['id'];
        ?>
        <option value="<?php echo $catid; ?>"<?php if($catid == $form->value("category")){ echo 'selected="selected"'; }?>><?php echo $title; ?></option>
        <?php
    }   
    ?>
</select>
<select name="subcategory">
    <?php 
    $q = $admindb->getSubCategories($catid);
    while($row=mysql_fetch_assoc($q)){
        $title=$row['title'];
        $catid=$row['id'];
        ?>
        <option value="<?php echo $catid; ?>"<?php if($catid == $form->value("subcategory")){ echo 'selected="selected"'; }?>><?php echo $title; ?></option>
        <?php
    }   
    ?>
</select>
如你所见,我有两个下拉框

问题是,第二个框需要选择第一个框才能工作。 因此,我需要实现一种方法,将选择从第一个框传递到第二个框

有谁能提供一些关于如何做到这一点的建议吗


谢谢

您需要将创建第一个和第二个下拉列表的代码分离到两个单独的PHP文件中。当有人在第一个选择框中选择一个类别时,向生成第二个列表框的文件发出Ajax请求。在请求中包括第一个选择框中的选择。我建议使用jQuery来执行实际的Ajax请求。

根据数据的来源,您可能需要也可能不需要专门的Ajax调用。但是您确实需要捕获事件,然后相应地填充第二个下拉框。最简单的方法是使用jQuery事件:


也有关于这方面的教程。只要用谷歌搜索一下就可以了。

所以你要用HTML,你要用jQuery,因为它是baller

在HTML中,您将有一个包含两个下拉表单字段的列表

我将使用简短的伪代码来解释

$('#first_dropdown').change(function(         
    // When someone makes a change to the drop down or "selects" something (maybe bind click() too)
    // Your code here to select the value selected and do a ...
    $.post() // post to some PHP script that will return the values that will fill the 2nd  
    // dropdown but it'll be stored in some javascript variable
    // and you're going to add jQuery code to take that js variable to populate the 2nd dropdown
){});

这里有一个方法可以做到这一点

在php中创建第一个下拉列表,并禁用第二个为空 将一个JS方法绑定到第一个下拉列表中,该方法在更改时被激发 在PHP中,创建一个为第二个下拉菜单返回数据的入口点,AJAX将使用该入口点获取数据 在绑定到第一个下拉列表的JS方法中,使用AJAX获取第二个下拉列表的数据
现在,您可以使用jQuery、prototype、yui以及任何适合您的JS工具包。如果我是初学者,我会从服务器发送标记以响应我的AJAX调用,并在下拉列表中替换该标记

不需要两个单独的PHP文件。ajax调用也不是。根据数据的大小,所有内容都可以加载到单个文件中。可以使用js数组或JSON对象完成,然后在事件触发时动态加载到第二个选择框中。您可以这样做,但为什么要这样做呢?如果数据足够简单,那么这样做更有意义。它最终会更快,网络流量更少。另外,只需指出选项——ajax是没有必要的。我从来没有说过ajax是唯一的选项。但是,如果你想让你的网站继续增长并保持可维护性,那么在你的页面上转储整个类别表并不是一个很好的策略。如果数据是静态的,永远不会增长呢?如果第一类是只有加拿大和美国的国家,第二类是居住在美国或加拿大省份的州或普罗维登斯,该怎么办?在这种情况下继续进行ajax调用没有多大意义。我试图实现的只是一个小数据传递。我想选择父类别,然后将该类别的id发送到DB查询,以相应地填充子类别下拉列表!使用Bing,非常有趣!不是第二名,顺便说一句,我不明白你问题的背景…你为什么要问这里?因为这里不是一个分享私人信息的平台,所以在没有你的电子邮件ID的情况下,我给你发了推特。我的推特帐户是@eggzoticthy。我应该检查你的推特,我不是一个很好的推特,我整天都沉迷于FB,而且拖拖拉拉,现在,为了学习一些东西,我决定这样做