<?php 
include "../frame/session.php"; 
include "../../jwork/Data.php"; 
//查询代码 
$site=$_REQUEST["site"]; 
$class=$_REQUEST["class_id"]; 
$keyword=trim($_REQUEST["keyword"]); 
$sql="select a.*,b.site_name,c.class_name from product_info a,site_info b,product_class c where a.site_id=b.site_id and a.class_id=c.class_id"; 
if(!empty($site)) 
  $sql.=" and a.site_id={$site}"; 
if(!empty($class)) 
  $sql.=" and a.class_id={$class}"; 
if(!empty($keyword)) 
  $sql.=" and a.title like'%{$keyword}%'"; 
  $sql.=" order by time desc"; 
  $d = new Data(); 
  $d->style="num"; 
  $list=$d->jpage($sql); 
  $foot=$d->foot; 
?> 
----------------------------------------以上为查询代码------------------------------------------------ 
<html> 
<head> 
<script src="../../jwork/ajax/ajax.js"> </script> 
</head> <boby> 
<form action="list.php" method="GET"> 
大类: <select name="site" id="site" onchange="mysmall(this)"> 
    <option value="0"> </option>  
<?php 
    $s = new Data(); 
    $ssql="select * from site_info"; 
    $slist=$s->sqlArray($ssql); 
      foreach($slist as $rowid=>$row) 
  { 
      $key=$row["site_id"]; 
      $value=$row["site_name"]; 
  if($_REQUEST["site"]==$key) 
      echo " <option value={$key} selected>{$value} </option>"; 
  else 
      echo " <option value={$key}>{$value} </option>"; 
            } 
?> 
</select> 
小类: <select name="class_id" id="class_id"> 
    <option value="0"> </option> 
<?php 
$c = new Data(); 
$csql="select * from product_class"; 
$clist=$c->sqlArray($csql); 
      foreach($clist as $rowid=>$row) 
  { 
      $key=$row["class_id"]; 
      $value=$row["class_name"]; 
  if($_REQUEST["class_id"]==$key) 
      echo " <option value={$key} selected>{$value} </option>"; 
  else 
      echo " <option value={$key}>{$value} </option>"; 
  } 
?> 
</select> 关键字: <input type="text" name="keyword" size="15" value=" <?php echo $_REQUEST["keyword"]?>" /> 
            <input type="submit" value="搜索" /> 
</form> 
-----------------------------------以上为下拉框的代码内容表单提交到当前页面----------------------------------- 
<script> 
function mysmall(obj) 

var ajax = new Ajax(); 
ajax.jget("../class/ajaxserver.php?act=xy&site_id="+obj.value,ShowResult); 

function ShowResult(sv) 

var s = document.getElementById("class_id"); 
s.options.length=0; 
eval(sv); 

  window.onload = function() 

var bigclass = document.getElementById("site"); 
mysmall(bigclass); 
var s = document.getElementById("class_id"); 
<?php 
  if(!empty($_REQUEST["class_id"])) 
  { 
  echo < < <EOJ 
  for(i=0;i <s.length;i++) 
  if(s.options[i].value==" <?php echo {$_REQUEST["class_id"]}?>") 
  s.options[i].selected=true; 
EOJ; 
  } 
?> 

</script> 
<boby> 
</html> 
这是js代码,主要用途是用ajax根据大类的选择 无刷新的列出对应小类的内容,选择好后点击搜索, 现在的情况是大类搜索后不变(定那了) 关键字也没有问题 也会保留下来  但小类会恢复原来的初始选项(定不上)  window.onload = function()这个作用 是想在页面加载的时候 让其执行大类的ajax,这样就会避免页面第一次加载时不执行ajax的话,不会根据大类情况列出对应的小类,反而会把所有小类都列出来!  我个人认为就是这里出的问题!当点击搜索后 页面会重新执行,到这里就会刷新,所以在里面加了个判断,让其取出搜索后网址中的值 然后让其选中! 但总是达不到预期想法! 应该是处理方法的逻辑不对! 本人新人 分数不多!各位达人 还望慷慨相助!帮忙解决我这个问题! 在此感激不尽!

解决方案 »

  1.   

    我的是用ASP+javascript编的,基本测试成功了!你主要看下js代码吧,希望对你有用^_^
    只是在选择第一项<option value="">选择大类</option>时,浏览器会报N(N=大类个数)个js错误,但是不影响正常使用,你的代码对我很有启发!
    <script language = "JavaScript" type="text/javascript">
    <%
    Set Rs = Server.CreateObject("Adodb.Recordset")
    Rs.Open "SELECT * FROM article_class where Flag<>0",conn,1,1
    %>
    var onecount;
    onecount=0;
    subcat = new Array();
    <%
       i = 0
       Do While Not Rs.eof 
    %>
    subcat[<%=i%>] = new Array("<%= Trim(Rs("ClassName"))%>","<%= Rs("Flag")%>","<%= Rs("Unid")%>");
    <%
           i = i + 1
           Rs.MoveNext
        Loop
        Rs.Close
    %>
    onecount=<%=i%>;
    function changelocation(locationid,newsorder)
        {
        newsorder.SmallClassNo.length = 0; 
        var locationid = locationid;
        var i;
        for (i = 0;i < onecount; i++)
            {
                if (subcat[i][1] == locationid)
                {
                 newsorder.SmallClassNo.options[newsorder.SmallClassNo.length] = new Option(subcat[i][0], subcat[i][2]);
                }
            }
        }
    </script>
    <table width="95%" border="1" cellspacing="0" cellpadding="3" align="center" bordercolorlight="#ECEEE4" bordercolordark="#CCCABC">
      <tr> 
        <td colspan="8" align="center" height="30" background="image/tablebg.gif"><b>小 栏 目 文 章 排 序</b> </td>
      </tr>
      <tr align="center"> 
        <td height="25">ID</td>
        <td>排序操作</td>
        <td>文章标题</td>
        <td>时间</td>
      </tr>
      <tr>
      <form name="newsorder" action="" method="post">
        <td height="25" colspan="7">选择文章大栏目:
          <select name="BigClassNo" id="BigClassNo" onChange="changelocation(document.newsorder.BigClassNo.options[document.newsorder.BigClassNo.selectedIndex].value,document.newsorder);">
          <option value="">选择大类
              </option>
              <%
                    sqlc = "Select Unid,Classname from article_class where flag = 0 order by Unid asc"
                    Set RsBig = Conn.execute(sqlc)
                    if not RsBig.eof then
                        do while not RsBig.eof
                            Response.write "<option value="&RsBig(0)
    if  Qcdn.checkStr(Request.form("BigClassNo"))<>"" then
    if RsBig(0)-Qcdn.checkStr(Request.form("BigClassNo"))=0 then
    Response.write " selected"
    else
    Response.write " id="&RsBig(0)
    end if
    end if
                            Response.write ">---|"&RsBig(1)&"</option>"
                        RsBig.movenext
    %>
    <script language="javascript" type="text/javascript">
    window.onload=function()
    {
    changelocation(document.newsorder.BigClassNo.options[document.newsorder.BigClassNo.selectedIndex].value,document.newsorder);
    for(var w=0;w<newsorder.SmallClassNo.length;w++)
    {
    if(document.newsorder.SmallClassNo.options[w].value==<%=Qcdn.checkStr(Request.form("SmallClassNo"))%>)
    {
    document.newsorder.SmallClassNo.options[w].selected=true;
    }
    }
    }
    </script>
    <%
                        loop
                    else
                        Response.write "<option value="">还没有添加大栏目</option>"
                    end if
                    RsBig.close
    %>
          </select>
          选择文章小栏目:
          <select name="SmallClassNo" id="SmallClassNo">
              <option value="">选择小类</option>
                <%
                      If BigClassNo <> "" and SmallClassNo <> ""Then
                      Set RsSmall = Conn.Execute("SELECT * FROM article_class WHERE flag = "&rs(0))
                      Do While Not RsSmall.Eof
                      Response.Write "<option value="&RsSmall(0)&">---|"&RsSmall(1)&"</option>"
                      RsSmall.MoveNext
                      Loop
                      End if
                      Set RsSmall = Nothing
                %>
          </select>
          <input type="submit" name="submit" value="筛选" class="tbutton">
        </td>
      </tr>