</select>重复了
$trow[topicid]=$topicid 逻辑运算写成了赋值改php
<?
$tsql = "SELECT * FROM paper_topic ORDER BY topicid";
$tresult = pg_query($conn, $tsql);
session_start();
session_register("topicid"); 
while ($trow=pg_fetch_array($tresult)){
 echo "<option value='$trow[topicid]' ".($trow[topicid]==$topicid)?"selected":"".">$trow[title]</option>\n";}
?>
<script>
function FtopicOnChange()         
{
    var i;
var len=document.opt.Ftopic.length;
alert(document.opt.Ftopic.length);
for(i=0;i<=len-1;i++)
{
if(document.opt.Ftopic.options[i].selected)
{
topicid=document.opt.Ftopic.options[i].value;
alert(topicid);
break;
}
}
location="?topicid="+topicid;       //刷新本页
}</script>
<form name="opt">
<select size=1 name=Ftopic onchange="FtopicOnChange()">
<option value="0">choose</option>
<option value="1">1</option>
<option value="2" selected>2</option>
<option value="3">3</option>
</form>还有,检查一下form的name是不是"opt"

解决方案 »

  1.   

    与数据库交互的检查,建议使用ajax技术。
    纯粹客户端的联动建议使用现成的脚本。你这样子弄,没什么意义。
      

  2.   

    怎么会没有意义呢?AJAX没出来的话,不就不要写了?更何况AJAX也是JS的代码。
    我觉得用这种方式比用JS来写联动的代码更简单。
      

  3.   

    什么错误,
    FtopicOnChange完全可以不用那么麻烦function FtopicOnChange()
    {
        topicid=document.opt.Ftopic.value;
        location="postpaper.php?topicid="+topicid; //刷新本页
    }