如何使用PHP为上次上传的文件生成不同的HTML?

时间:2012-09-27 19:44:03

标签: php fancybox

我正在fancybox中创建一个图片库,但我正在尝试自动化图片上传。

Fancybox图库是<a>标记的集合,但列出的第一个<a>标记也有一个<img>标记,可以像这样打开缩略图:

<a href="image1.jpg"><img src="image1thumb.jpg"></a>
<a href="image2.jpg"></a>
<a href="image3.jpg"></a>

目前,我必须为我上传的每个新图片手动添加<a>标签,这将是单调乏味的。我宁愿将链接添加到mySQL数据库,然后由一段PHP获取。

简单的英文代码如下:

对于上次上传的文件,请显示<a href.......><img src=.......></a>,然后仅显示<a href........></a>所有其他图片。

我已经拥有上次上传文件的代码,显示为$ lastupload,但我正在努力使用foreach循环。到目前为止,我有:

foreach ($lastupload) {
echo '<a class="fancybox" rel="'.$r["rel"].'" href="'.$r["imagelink"].'" title="'.$r["comment"].'"><img src="thumb.jpg"></a>';
        }
else {
echo '<a class="fancybox" rel="'.$r["rel"].'" href="'.$r["imagelink"].'" title="'.$r["comment"].'"></a>
      }

现在,我知道这段代码基本上没用了。我知道我在初始的foreach括号中需要更多,而且其他不应该是这个循环的一部分(它应该是foreach / ifelse),但我不知道如何继续进行。我看过的所有例子都说明了我不确定是否符合我要做的事情。另外,到目前为止我还没有看过如何从mySQL数据库生成链接列表的示例。

你能给予的任何帮助都会有很长的路要走。

由于

3 个答案:

答案 0 :(得分:0)

你看过foreach()循环实际上是如何工作的吗?您不需要计算此特定循环。或者你可以循环直到你的结果结束(见下文)。

http://php.net/manual/en/control-structures.foreach.php

至于从数据库中提取链接,请查看mysqli_fetch_assoc()。有一些while()循环的示例可用于查询。

http://php.net/manual/en/mysqli-result.fetch-assoc.php

请看PHP.net手册中的上述示例,这是一个非常好的信息来源。

答案 1 :(得分:0)

我不确定我完全理解你的问题。我不知道你的例子里有什么$ r,但是我可以告诉你想要做这样的事情:

$i = 0;
foreach ($r as $row) {
  if ($i == 0) {
    echo '<a class="fancybox" rel="'.$row["rel"].'" href="'.$row["imagelink"].'" title="'.$row["comment"].'"><img src="'.$lastupload.'"></a>';
  }
  else {
    echo '<a class="fancybox" rel="'.$row["rel"].'" href="'.$row["imagelink"].'" title="'.$row["comment"].'"></a>
  }
  $i++;
}

答案 2 :(得分:0)

答案不是要查找上次上传的文件,只是以不同方式处理查询的第一个结果。

这是我得到的完整代码:

<?php
  $foo_query->setFetchMode(PDO::FETCH_ASSOC);
  $is_first=false;
  while($r=$foo_query->fetch()) {
    if($is_first) {
      echo '<a...blah blah blah><img src="thumb.jpg"></a>';
    } else {
      echo '<a...more blah></a>';
    }
  } 
?>