2011-10-21 91 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