动态图像列表使用php mysql smarty里面的jquery

时间:2012-08-12 21:59:58

标签: php jquery smarty

我想使用php(adodb)和smarty在jquery函数中打印图像地址列表。

我需要这个:

 $.lightbox(["/media/photos/tmb/4.jpg", "/media/photos/tmb/3.jpg", "/media/photos/tmb/6.jpg"]);

我尝试这个(只是简单的测试):

 {/literal} {if $photos} $.lightbox(["{"\", \""|implode:$photos}"]); {/if}{literal}

结果是:

 $.lightbox(["Array", "Array", "Array", "Array", "Array", "Array", "Array", "Array", "Array", "Array", "Array"]); 

实际上,我需要用图像地址替换数组。

图像地址(动态循环):

{$relative}/media/photos/tmb/{$photos[i].PID}.jpg

没有jquery函数,我用这种方法列出图像:

{if $photos}
{section name=i loop=$photos}
{$relative}/media/photos/tmb/{$photos[i].PID}.jpg
{/section}
{/if}

php代码:

    $sql            = "SELECT PID, caption FROM photos WHERE AID = " .$aid. " AND status = '1' LIMIT " .$limit;
    $rs             = $conn->execute($sql);
    $photos         = $rs->getrows();
    $smarty->assign('photos', $photos);

如何根据我的需要打印列表?我可以吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法是将数组分配给模板,然后使用json_encode()。我不经常使用Smarty,但我相信你可以这样做:

{$yourImageArray | json_encode}

编辑现在您终于告诉了我们您的数组包含的内容:

  

数组([0] =>数组([0] => 13 [PID] => 13 [1] => [caption] =>)[1] =>数组([0 ] => 14 [PID] => 14 [1] => [caption] =>)[2] =>数组([0] => 15 [PID] => 15 [1] => [caption] =>)[3] =>数组([0] => 30 [PID] => 30 [1] => salam [caption] => salam)[4] =>数组([0] => 17 [PID] => 17 [1] => [caption] =>)[5] =>数组([0] => 31 [PID] => 31 [1] => [caption] =>)[6] =>数组([0] => 32 [PID] => 32 [1] => [caption] => ;)[7] =>数组([0] => 33 [PID] => 33 [1] => [caption] =>)[8] =>数组([0] => ; 34 [PID] => 34 [1] => [caption] =>))

这是您需要做的事情。在您的控制器中:

$photoFileNames = array();
foreach ($photos as $photo) {
    $photoFileNames[] = $photo['PID'];
}

$smarty->assign('photoFileNamesJSON', json_encode($photoFileNames));

在模板中,您可以通过$photoFileNamesJSON访问数组。下次发布问题时,请从一开始就包含所有信息。如果您对问题有所了解,那么提供更具体的答案会更容易。