1

所以,我正在学习PHPMySQL,但我在这里遇到了一个小问题。

我确实缺乏一些信息,所以这对我很有帮助=)

我对我的数据库进行查询,并得到一个结果。这个结果是我要列出的所有图像文件。

$fileSQL = $mysqli->query("
    SELECT *
    FROM content
    WHERE projID=$projectID     
");

所以,如果我想在我的页面上以缩略图的形式列出我的所有文件,我会这样做:

<?php while($row = $fileSQL->fetch_assoc()){ ?>
    <img src="assets/<?=$row['contentFull']?>" id="thumbImg"
    onclick="document.getElementById('mainImage').src=this.src" width="110px" height="62px"/>           
<?php } ?>

现在,这当然可以正常工作。它遍历所有行,同时为每一行添加一个。

但是,我也有一个主图像,我需要完整地显示第一个拇指(对于这个例子,我contentFull同时使用拇指和全尺寸)。

现在,如何在contentFull不让 while 循环从第 nr.2 行开始的情况下获得第一行?

一般来说; 在这些情况下最好的方法是什么?首先将结果存储到数组中,以便我可以轻松访问它,或者“正常”的做法是什么?=)

我需要的:

  1. 进行查询
  2. 设置主图像(使用我的 sql 结果中第一个图像/内容中的 contentFull)
  3. 然后将结果中的所有图像绘制为缩略图(包括已显示为主图像的第一个图像)

在此先感谢,如果您需要更多信息,请告诉我=)

4

2 回答 2

1

一个简单的选择是这样做:

<?php 
$first = null;
while($row = $fileSQL->fetch_assoc()) {
    if(!isset($first)) $first = $row;
    ?>
    <img src="assets/<?=$row['contentFull']?>" id="thumbImg"
    onclick="document.getElementById('mainImage').src=this.src" width="110px" height="62px"/>           
<?php } ?>

现在您将第一行存储在要使用的变量中,而不必将所有结果存储在数组中。如果出于某种原因您希望将所有行存储在一个数组中,您可以简单地执行以下操作:

<?php 
$rows = array();
while($row = $fileSQL->fetch_assoc()) {
    $rows[] = $row;
    //rest of code
}
?>

然后你可以通过引用访问第一行$rows[0]

另一种选择是不使用 php 填充完整图像。而是使用 javascript 调用来填充第一张图像。

于 2013-08-19T15:27:04.633 回答
0

我认为您可以在while循环之外拍摄第一张照片:

$row = $fileSQL->fetch_assoc(); // the first picture
if($row){
  // show first image if it exists
  }

while ( $row = $fileSQL->fetch_assoc()) // etc.

可能较大图像的代码与其他图像不同,因此可能是合理的。如果没有,请考虑定义一个函数,或使用一个计数器(或像 Pitchinnate 的答案中的标志)。

于 2013-08-19T15:28:34.760 回答