簡體   English   中英

具有動態鏈接的動態頁面

[英]Dynamic page with dynamic link

嗨,我有一個排序問題要問。

我的數據庫的mySQL表中的列之一包含帶有“ Photoname”的圖像。

數據庫:

照片名
蘋果


橙子

因此,在我的catalog.php中,我將顯示數據庫中的所有圖像。 然后,我有一個導航欄(div),以允許查看者過濾圖像。 因此用戶可以按A | B | C ... | Z |。

我的問題是關於URL和權限的。 我會創建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個條目執行此操作嗎? 還是有更簡單的方法?

您可以使用這樣的東西...

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

如果鏈接的格式是這樣,則它們將以$ _GET super global結尾:

$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>';
}

您需要從$ _GET數組中獲取sort的值。 在SQL查詢中使用輸入之前,請確保對輸入進行清理

$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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM