动态链接的动态页面

时间:2011-10-21 07:13:28

标签: php mysql

您好我要问一个排序问题。

我的数据库中包含“Photoname”的图像,作为mySQL表中的一列。

数据库:

  

Photoname
  苹果
  熊
  猫
  橙

所以在我的catalog.php中,我会显示数据库中的所有图像。然后,我有一个导航栏(div),允许观众过滤图像。因此用户可以通过A |查看B | C ... | ž|

我的问题是关于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个条目做这个吗?还是有更简单的方法?

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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>';
}

答案 2 :(得分: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
}