试图制作图库

时间:2016-02-07 23:06:45

标签: php html

所以,我正在尝试通过在图像描述下显示下一个/上一个链接来改进我在PHP网站上使用的图像库,但我不知道如何让页面知道什么是在图像列表中的下一个。我目前的图像页面存储在这样的数组中:

$icoFanSprites = array(
    "Dust",
    "Glados",
    "Mario",
    "Megaman",
    "PortalTurret",
    "PortalCubes"
);

这是将链接放在图像列表页面上的行的代码:

function generateIcons($items, $prefix){
    foreach($items as $it){
        echo "<a href=\"" . $prefix . $it . ".php\"><img class=\"sprite\" src=\"img/ico" . $it . ".png\" /></a>";
    };
};

它通过获取角色名称并将其放入链接中,并将“ico”添加到图标中,并将$前缀添加到实际图像页面名称(因为我使用“spr”表示精灵,“dd”表示数字图纸等。)。

我的问题来自导航部分。我不知道如何让PHP知道用户当前在页面数组中的位置。我想过使用一个记住他们点击位置的cookie,但后来我想,如果他们禁用了cookie会怎么样?我怎样才能在页面之间传输数据?

在我的Squirrel教程中,我只是直接将该数字放入导航生成器,但这是因为我使用的是简单的编号列表。我的图片库分为个人资料,粉丝艺术和委托艺术品,以及我的公共资产被分为不同的类型。我为每种类型都有多个数组,因此generateIcons()不会将错误数量的图像放在同一行上。然而,导航数组是使用array_merge()合并为单个数组的所有部分,所以我并不总是知道图像在合并数组上的位置,即使我这样做,这实际上也意味着每次添加图片时都会对我进行更多编辑。

我在这里完全不知所措。每当我想到某些事情时,我也会想到为什么它不起作用。

我的网站是http://www.kelvinshadewing.net,如果有人想看看它目前的样子。

1 个答案:

答案 0 :(得分:1)

这些通常更容易用索引进行思考,并将索引存储在页面或网址中,但是...

您可以执行array_search(),然后检查是否存在上一个和下一个键。

$icoFanSprites = array(
    "Dust",
    "Glados",
    "Mario",
    "Megaman",
    "PortalTurret",
    "PortalCubes"
);

$current = 'Mario'; // Or wherever you would get this from.
$previous = null;
$next = null;

$index = array_search($current, $icoFanSprites);
if($index === false) { // Exactly equal, as value could be 0
    // Handle the case where the sprite isn't in the list
}
if(array_key_exists($index - 1, $icoFanSprites) {
    $previous = $icoFanSprites[$index - 1];
}
if(array_key_exists($index + 1, $icoFanSprites) {
    $next = $icoFanSprites[$index + 1];
}

或者,您可以制作类似http://www.kelvinshadewing.net/sprite.php页面的内容。然后使用url参数跟踪要显示的信息。例如:

sprite.php          // <- index (eg this: http://www.kelvinshadewing.net/artPixel.php)
sprite.php?sprite=1 // <- Dust
sprite.php?sprite=2 // <- Glados
etc

可以从$_GET全局数组访问网址中sprite的值,即:$_GET['sprite']。如果您更喜欢网址值提供更多信息,可以将其与上面的代码结合使用,以便您可以从以下代码中计算出索引:sprite.php?sprite=Mario