iT邦幫忙

0

PHP select SQL抓完值後,再用下拉式選單同一頁顯示值 會顯示SQL錯誤

young122333 9 月前2750 瀏覽

直接切入主題,我有兩個頁面,第一頁有一個收尋表格,可收尋到資料庫資料。

按下收尋後會開啟第二頁,也就是POST那頁,抓資料都沒問題,我在這一頁新增了下拉式選單,如下圖顯示,這個功能是正常的,在不收尋資料庫下,這功能都可正常顯示,如果收尋了資料庫,就會顯示資料庫錯誤,我猜是

onChange="location = this.options[this.selectedIndex].value;"

會進行跳頁,導致資料庫沒有連接,我該如何下手資料庫才不會發生錯誤?
資訊如下圖

下拉式選單
http://ithelp.ithome.com.tw/upload/images/20160823/200824567lRiVvYNL2.jpg

網頁顯示
http://ithelp.ithome.com.tw/upload/images/20160823/20082456YAbFcC9ExI.jpg

如果收尋資料後,會開啟post頁面,資料會帶入表格,但在選擇下拉式 則會出現資料庫錯誤,如下。

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]接近 '=' 之處的語法不正確。, SQL state 37000 in SQLExecDirect in D:\AppServ\www\hr\dblink.php on line 38
在 odbc_exec 有錯誤發生( 沒有指標傳回 )
看更多先前的討論...收起先前的討論...
haoming iT邦研究生 1 級 ‧ 9 月前 檢舉
location = this.options[this.selectedIndex].value;
這樣你的 location 只會變成 ?get_date=範例1 , 然後 應該是 目錄內的 default page 去收到變數.
wonton iT邦高手 6 級 ‧ 9 月前 檢舉
第二頁把 SQL 語句 echo 出來看看有沒有錯誤,因為 Warning 有講了「接近 '=' 之處的語法不正確。」...
young122333 iT邦新手 4 級 ‧ 9 月前 檢舉
SQL的錯誤就是沒收尋任何項目
我在第一頁先收尋,正常帶入第二頁
在第二頁的下拉式選單點選項目後,就出現錯誤
所以即已可能是跳頁導致SQL變成沒收尋項目,出現錯誤。
如果是跳頁錯誤,該如何更改才能修正跳頁找不到資料庫收尋的問題??
謝謝
fillano iT邦超人 1 級 ‧ 9 月前 檢舉
你有把第二頁post進來的資料放進<input type="hidden"...,然後放進選單的form一起送出嗎?
young122333 iT邦新手 4 級 ‧ 9 月前 檢舉
我的第二頁不能送出,只能列印
因為第一頁已經送出(查詢完傳到第二頁了)

所以我才在第二頁直接做下拉是選單,這樣有得解嗎?
young122333 iT邦新手 4 級 ‧ 9 月前 檢舉
第二頁送出 一樣是查詢SQL,我現在想到兩種做法
1.把第二頁SQL帶出來的值 全部保留,按下拉式選單跳頁的時候依然保留SQL的值
2.把下拉是選單改道第一頁,且將第一頁的值傳送到第二頁
但以上都有些疑問
方法1.目前還不知道如何比留那些值
方法2.下拉式在第一頁時,我按鈕的from式傳送到sql裡
因此我也不知道如何用這一個按鈕來傳遞下拉式選單的值
fillano iT邦超人 1 級 ‧ 9 月前 檢舉
你的問題會發生,是因為下拉選單只改了URL,沒把第一頁傳來的搜尋資訊一併處理,導致sql查詢出問題。你應該把第一頁傳來的資訊跟第二頁透過下拉選單的選擇的結果一起再次post到第二頁,第二頁的程式要一併處理這兩部分的的資訊,然後組出你要的sql。
young122333 iT邦新手 4 級 ‧ 9 月前 檢舉
一個from裡 可以同時傳送SQL值和下拉是選單的值到下一頁嗎?
fillano iT邦超人 1 級 ‧ 9 月前 檢舉
不是sql值...算了,我回答XD

1 個回答

5
fillano
iT邦超人 1 級 ‧ 9 月前
最佳解答

假設你第一頁的搜尋,傳了一個搜尋的條件到第二頁,然後第二頁在搜尋結果出來後,另外有個下拉選單可以選額外篩選的東西。

例如第一頁:

<form method="post" action="page2.php">
<input type="text" name="searchValue" />
<input type="submit" />
</form>

然後在第二頁:

<?php
$searchValue = 過濾($_POST["searchValue"]);
$filterValue = $_POST["filterValue"] ? 過濾($_POST["filterValue"]) : 0;
$sql = "select * from xxx where col1='$searchValue'";
if($filterValue > 0) $sql .= " AND col2 = '$filterValue'";
//查詢$sql
?>
<form method="post">
<input type="hidden" name="searchValue" value="<? = $searchValue ?>" />
<select name="filterValue" onchange="this.submit()">
<option value="0" <?php if($filterValue==0) echo 'selected';?>>請選擇</option>
<option value="1" <?php if($filterValue==1) echo 'selected';?>>行政</option>
<option value="2" <?php if($filterValue==2) echo 'selected';?>>人資</option>
...
</select>
</form>
<div>顯示結果</div>

大概像這樣

fillano iT邦超人 1 級 ‧ 9 月前 檢舉

阿,回太快...

請改一下select:

<select name="filterValue" onchange="this.form.submit()">
海綿寶寶 iT邦超人 1 級 ‧ 9 月前 檢舉

我對費大師解讀問題的能力
佩服得五體投地
(完全看不懂問題的路人留)
/images/emoticon/emoticon06.gif

young122333 iT邦新手 4 級 ‧ 9 月前 檢舉

有效了 感謝了

我要發表回答

立即登入回答