2011-10-21 126 views
0

嗨,我有一個排序問題要問。動態鏈接的動態頁面

我的數據庫的圖像名爲「photoname」,作爲mySQL表中的一列。

數據庫:

Photoname
蘋果


橙色

所以在我catalog.php,我將顯示所有從數據庫中的圖像。然後,我有一個導航欄(div),讓觀衆過濾圖像。因此用戶可以通過A |查看B | C ... | ž|。

我的問題是關於URL和approarch。我將創建imagesort.php,它將以一般方式處理所有mySQL(這樣我就不必浪費時間爲A-Z創建)。

如果imagesort.php類似imagesort.php?sort=A?然後在imagesort.php我怎麼能得到值A?例如: select photoname, date from image where photoname LIKE 'a%'

而且如果上述方法是正確的,我該如何解析這個變量A到catalog.php中的鏈接? 以下是我在我的catalog.php迄今所做的:

<ul> 
<li><a href="imagesort.php?sort=A">A</a></li> 
<li><a href="imagesort.php?sort=B">B</a></li> 
<li><a href="imagesort.php?sort=C">C</a></li> 
... 
</ul> 

難道我真的有26項做到這一點?還是有更簡單的方法?

回答

1

您可以使用這樣的事情...

<ul> 
<?php for($i=65;$i<90;$i++) { ?> 
<li><a href="imagesort.php?sort=&#<php echo $i;?>;">&#<php echo $i;?>;</a></li> 
<?php } ?> 
</ul> 
0

如果鏈接的格式一樣,那麼他們將在$ _GET超級全局結束:

$sort = $_GET['sort']; 

對於第二個問題,你可以很容易地使用循環在PHP中通過的字母運行字母表,以生成所需的分頁內容:

$link_base = 'imagesort.php'; 
$pagination_content = '<ul>'; 
for($i=65; $i<=90; $i++) 
{ 
    $pagination_content .= '<li><a href="'.$link_base.'?sort='.chr($i);.'">'.chr($i).'</a></li>'; 
} 
0

你需要從$ _GET數組獲得的sort值。在你的SQL查詢中使用它之前,請確保你輸入了sanitize

$match = ""; 

if(isset($_GET['sort'])) 
{ 
    // Escape the string to guard against SQL injection 
    $match = mysql_real_escape_string($_GET['sort']); 
} 

$query = "select photoname, date from image where photoname LIKE '$match%'"; 

此代碼具有用於工作sort任何值,包括一個空字符串的效果。如果你想限制的有效字符串,以一個大寫字母字符,你必須爲分別檢查,像這樣:

if(strlen($match) != 1 || ctype_upper($match) == false) 
{ 
    $match = ""; 
    // Maybe some other error condition 
} 
+0

我會添加一個檢查以確保'sort'參數是從'a'到'z'的字母之一=以確保帶有like的查詢不會太過分(例如。%a%) –

+0

@EdHeal謝謝,我添加了一些代碼來做到這一點。 – Anson