如何从下拉列表中选择值,从另一个表中获取相应的值,然后将它们放入另一个下拉列表中?

时间:2011-01-30 16:56:42

标签: php mysql

好的,这是一个数据库。

http://i.stack.imgur.com/j05AB.png

假设我已经为这些表中的每个表插入了数据库值,尽管ID会自动递增。每个AVALUE都有许多BVALUES,因此是AB表。我在表A的所有AVALUE中都有一个下拉列表。用户选择我使用

放入变量的AVALUE
$AVALUE = $_POST['AVALUE']

然后我做一个sql语句来从表A中获取等于$ AVALUE的AVALUE。

$sql = "SELECT AVALUE FROM TABLEA WHERE" . $AVALUE . " = AVALUE";

如何从TABLEA获取该AVALUE的NAMEID,然后引用AB,其中TABLEANAMEID =来自TABLEA的NAMEID?然后我希望通过获取与TABLEANAMEID对应的所有TABLEBNAMEID来获取所有BVALUES。

然后,我想将这些BVALUES放在单独的HTML页面上的下拉列表中。在谷歌搜索之后,我认为解决方案是做一些循环将BVALUES放入变量,因为表B中的所有NAMEID都会增加变量将在$ BVALUE循环中的位置,并且列表值将显示在所有BVALUES。

我希望我解释说得对。我想我知道我想要做什么,但我不知道如何实际实现它。请帮帮我们。

2 个答案:

答案 0 :(得分:0)

您需要将这些表连接在一起。你所描述的是m:n关系。在这种情况下,你可以使用这样的2个连接:

SELECT * FROM TableA AS a WHERE a.avalue = $AVALUE
JOIN TableAB AS a2b ON a.namevalue = a2b.id_a
JOIN TableB AS b ON a2b.id_b = b.id

答案 1 :(得分:0)

也许你的意思是,你想获得与表AB中所选AVALUE有关系的所有BVALUE

$sql = "SELECT B.NAMEID as id, BVALUE as value FROM TABLEA A
        LEFT JOIN AB ON TABLEANAMEID=A.NAMEID
        LEFT JOIN TABLEB B ON TABLEBNAMEID=B.NAMEID
        WHERE AVALUE = $AVALUE";`

获取mysql结果

$result = mysql_query($sql);

迭代

echo "<select>";
foreach ($r = mysql_fetch_object($result)) {
   echo '<option value="'.$r->id.'">'.$r->value.'</option>';
}
echo "</select>";