2013-02-25 81 views
-1

我正在製作一些頁面,它將從數據庫中獲得一些排序後的內容。一個已經做了排序PHP,我需要通過按鈕來稱呼它,我需要將PHP輸出寫入某個已經在頁面上的div。可能嗎?如何調用php到wordpress頁面ajax

sorting.php

<?php 
mysql_connect("localhost", "login", "pass") or die(mysql_error()); 
mysql_select_db("database"); 

$result = mysql_query("SELECT * FROM table ORDER BY added ASC"); 

while($row = mysql_fetch_array($result)) 
    { 
    echo "<div class='something'>"; 
    echo "<a href='$row[link]'>"; 
    echo "<img src='$row[img]' height='125' width='125'/>"; 
    echo "<p>$row[name]</p></a></div>"; 
    echo "<br>"; 
    } 
?> 

每種類型的排序或過濾將由不同的PHP處理。 這是如何製作這種頁面的好方法?還是有一些更簡單更好的方法? 還有一件事。當選擇不同類型的過濾器時是否可以進行一些轉換?我想這樣的事情:quicksand

回答

0

如果你可以在你的頁面上包含jQuery,它有一個簡短的方法來做到這一點:.load()。你最終的JavaScript可能會是這個樣子:

$(document).ready(function() { 

    $("#searchButton").bind('click', function() { 
     $("#resultsDiv").load(
      'http://mysite.com/sorting.php', 
      { // parameters, in object literal format 
       sortDir: 'asc', 
       sortCol: 'lastname' 
       // etc. 
      } 
     ); 
    }); 

}); 

你在哪裏替代mysite.com,搜索按鈕,並resultsDiv爲您的網站/標記中的真實信息。你也可以使用jquery選擇器從頁面元素中獲得排序參數,如下所示:$("#sortDir").val() - 假設文本框,文本區域或選擇框。還有其他方法可以檢索複選框和單選按鈕,假設您的表單使用它們。爲了回答您的其他問題:

1)每類排序或篩選將由不同的PHP處理。這是如何製作這種頁面的好方法?還是有一些更簡單更好的方法?

對於少數人來說這並非不合理。不接受服務器上的任何參數是確保您永遠不會允許惡意輸入的一種方法。當您需要更改表名或您正在選擇的列並且必須修改每個文件時,它往往變得很難處理。你還需要認識到,如果你允許過濾器和排序的組合,你在談論支持它們的交集。如果你有3個過濾器和4種,那就是12種組合。如果你想添加另一個排序和另一個過濾器,你必須添加4個新的過濾器頁面和5個新的頁面 - 每次都會變得更糟。

大多數人會走所有數據轉到同一頁面的路線,只有該頁面負責驗證用戶輸入,制定查詢並返回結果。這種範例通常被稱爲DRY for Don't Repeat Yourself。但是,如果您接受用戶輸入,則需要非常小心validating it(在服務器端!Don't trust user input!),並且不允許例如a SQL injectionattack

2)還有一件事。當選擇不同類型的過濾器時是否可以進行一些轉換?我想要這樣的東西:流沙

那個特殊的動畫非常複雜。他們正在爲每個頁面顯示圖標之間的差異,並以編程方式自定義哪些圖標縮小,爆炸,移動等。我可以詳細瞭解如何自己做...

但你知道嗎?它是一個插件,與jQuery 1.3+兼容,並且在GPLv2的MIT &下許可,所以你應該沒有問題將它整合到你的網站中。檢查docs並自己刺。我沒有發現與排序返回的標記類型固有不兼容的問題。我注意到他們的例子是使用li標籤排序和你的榜樣回報使用div。但是,這不應該是一個重大的掛斷,如果是的話,只需返回li。當你遇到使用它的問題時,發佈另一個問題,適當標記它並準備發佈你在這方面嘗試過的一切。

+0

感謝您的幫助,它的工作原理接受你的.load()缺少一個右括號,但多數民衆贊成細節。還有一件事。我不知道那些sortDir和sortCol是什麼。你能把這些解釋給我嗎? – ProfiThing 2013-02-25 21:47:21

+0

更正了tyop,對此感到抱歉。 sortDir和sortCol只是示例參數。你提到有不同種類和過濾器的多個頁面。我傳遞的選項是傳遞到同一頁面的示例。回去,sortCol將「添加」(因爲這是你ORDER BY)和sortDir將「ASC」(因爲這是你的方向例如排序(訂單))的示例代碼。 – 2013-02-25 22:01:24

+0

是的,我認爲太過努力,但它不工作。我將它改爲sortDir:'asc',sortCol:'添加'並沒有任何反應。 chceck如果這個工程我試圖通過添加排序,並命名爲asc和desc,但沒有任何變化。 – ProfiThing 2013-02-25 22:13:34