我剛開始做項目時,有一個查找頁面,查找第一頁顯示是正常的,點擊第二頁后,發現顯示的是整個產品頁,這明顯是不對的。
在網上查了很久,也想了兩天,當時選擇的是用session記下查找的語句,這樣就不存在把關鍵字傳遞不見的結果。
其實總覺得這種方法不可取,後來參考公司其它人寫的分頁代碼,單獨寫一個分頁函數出來就行了。
不過這種方法是我想出來的,記下來作為參考:
1.查找頁面及JS驗證(兩種方式提交表單,一種是自動提交的)
<SCRIPT LANGUAGE="JavaScript">
function chksearch(){
obj = document.getElementById("area");
if(obj.value==""){
alert("please select area");
return false;
}
obj = document.getElementById("key");
if(obj.value=="" || obj.value=="關鏈字"){
alert("please input key");
return false;
}
}
function AreaSubmit(){
form = document.getElementById("form1");
document.getElementById("formsubmit").value="2";
form.submit();
}
</SCRIPT>
<form name="form1" id="form1" method="post" action="salons_search.php" οnsubmit="return chksearch()">
<input class="sub_sea" type="submit" value="" />
<input type="hidden" name="formsubmit" id="formsubmit" value="1">
<span class="key_seal"><input type="text" name="key" id="key" value="關鏈字" οnblur="if(!value)value=defaultValue;" οnfοcus="if(value=defaultValue)value='';" /></span>
<select name="area" id="area" οnchange="AreaSubmit()" >
<option value="all">所有地區</option>
<?php
$location_query = RunQuery("select id,location from `salon` group by location");
while ($location = mysql_fetch_assoc($location_query)){
?>
<option value="<?php echo $location['location']?>" <?php if (@$_POST['area']==$location['location']){echo "selected";} ?>><?php echo $location['location']; ?></option>
<?php }
mysql_free_result($location_query);
?>
</select>
</form>
2.寫入session的頁面salons_search.php,用header語句跳轉:
<?php
session_start();
$_SESSION['key'] = @trim($_POST['key']);
$_SESSION['area'] = @trim($_POST['area']);
if(@$_POST['formsubmit']==1){
if(@$_POST['area']=="all"){
$sql="select * from `salon` where `name` like '%".$_SESSION['key']."%' or adress like '%".$_SESSION['key']."%'";
}else{
$sql="select * from `salon` where location='".$_SESSION['area']."' and (`name` like '%".$_SESSION['key']."%' or adress like '%".$_SESSION['key']."%' )";
}
}elseif(@$_POST['formsubmit']==2){
if(@$_POST['area']=="all"){
$sql="select * from `salon`";
}else{
$sql="select * from `salon` where location='".$_SESSION['area']."'";
}
}
$_SESSION['salons_sql'] = $sql;
header("location:salons_result.php");
?>
3.顯示頁面salons_result.php
一般的sql語句就OK了。
$all_count_query = RunQuery($_SESSION['salons_sql']);