2009-11-30 141 views
0

我有一個廣告網站,有很多記錄存儲在mysql數據庫中。這樣做是「更好的方式」嗎?

在我的主頁上,我有一個表單,用戶可以指定他們的搜索條件。 操作設置爲myPhp.php文件。

myPhp.php不包含HTML,PHP只有代碼,它基本上是這樣的:

1- get values from FORM and build a SQL query 
2- query MYSQL db. 
3-display all results in a table using 
`while($row=mysql_fetch_array($res))` 
4- echo the table. 

在此表中這是在PHP創建,我有幾個環節也,而每當他們被點擊,調用父頁面上的JavaScript函數,該函數將隱藏的輸入值設置爲某個值,然後再次使用所選變量提交表單。例如:當用戶想要轉到搜索結果的下一頁時,他們必須點擊在PHP中創建的「下一個」鏈接,然後調用javascript,將隱藏的輸入值設置爲'next ',然後再次提交表單,PHP文件從隱藏輸入中獲取變量,並檢測其值是否設置爲'NEXT',然後顯示下一個結果。

難道真的沒有其他辦法可以做到這一切嗎? (就性能和可靠性而言,這是一個更好的方法)

我還在學習,所以我非常感謝您的幫助! 我會在需要更多輸入時更新此問題。

感謝

+0

我在你的問題中將「querystring」更改爲「SQL query」,因爲querystring在web上下文中具有另一個特定含義。 – 2009-11-30 12:52:47

+1

需要注意的一個問題是,並非所有用戶都已啓用javascript!你也應該確保可以使用你的鏈接而不使用javascript – espais 2009-11-30 13:02:30

回答

3

替換鏈接的下一個JavaScript調用

http://yourdomain/myPhp.php?page=2 

然後檢查myPhp.php的get參數:

if(isset($_GET['page']) AND is_numeric($_GET['page'])){ 
    $limit = (int) $_GET['page'] * MAX_RECORDS . ', ' . MAX_RECORDS; 
} else { 
    $limit = MAX_RECORDS; 
} 

//... 
$query .= 'LIMIT '. $limit; 

當然,你必須改變它作爲你的常量會發生變化等等。
此方法稱爲分頁。看看Zend FrameworkPaginator模塊,以便更好地理解。

+0

好的,但是如果我確實發送了像你上面提到的那樣的變量給PHP文件,那麼表單提交的其他變量會消失嗎? (如查詢字符串,價格和其他用戶輸入) – pesar 2009-11-30 13:03:37

+0

Foa:不發送查詢字符串。 2:如果你不發佈你的數據,你不能從POST超全球獲得他們。 – erenon 2009-11-30 13:08:01

+0

請在downvote後發表評論。 – erenon 2009-11-30 14:25:35

0

如果這些鏈接跨板至少有一個相同的類(帶有title屬性),您可以附加到它們以將所有這些鏈接附加到單個點擊事件並測試以查看單擊元素上的標題。

有了這個,你可以使用開關觸發正確的功能來執行任務(我想用JQuery/Ajax)。

這應該工作。至少沒有隱藏的字段。

例子:

<a href="myPhp.php?whatever you querystring is" title="NEXT">Next</a> 

<a href="myPhp.php?whatever you querystring is" title="AdDetails">Ad Details</a> 
0

在創建鏈接,您可以使用查詢字符串指定你想發送到服務器,而不是提交表單參數。所以,如果你有一個叫旁邊形式的隱藏的輸入,那麼你可以accompish這樣同樣的事情:

<a href="myPhp.php?next=NEXT">Next</a> 

在myPhp.php頁面,您可以得到,當你發送以類似的方式未來的價值表單。

+0

好吧,但如果我確實再次發送像上面提到的PHP文件那樣的變量,那麼表單提交的其他變量會消失嗎? (如查詢字符串,價格和其他用戶輸入) – pesar 2009-11-30 13:04:07

+0

哦。我沒有得到表單中有其他數據。我以爲你想知道用戶點擊了哪個鏈接。如果表單中的所有字段都是隱藏的,那麼您可以使用此方法,如果用戶可以編輯表單,則按照您已經完成的方式執行。你可以像這樣添加多個查詢字符串:url?var = val&var2 = val2&var3 = val3 – 2009-11-30 13:22:40

相關問題