这是我第一次在这里发帖,所以请耐心等待。
我正在使用HTML& amp;创建一个图库。 CSS,我在屏幕上显示一个图像,它有一个上一个/下一个按钮来切换图像(这不会带你到一个新的网页)。我正在使用PHP& MySQL填充图像。
所以,我有一张这样的表:
| ID | Name | Genre |
--------------------------------
| 1 | Apple | Fruit |
--------------------------------
| 2 | Cabbage | Veg |
--------------------------------
| 3 | Lettuce | Veg |
--------------------------------
| 4 | Pear | Fruit |
--------------------------------
| 5 | Banana | Fruit |
--------------------------------
| 6 | Leek | Veg |
--------------------------------
| 7 | Kiwi | Fruit |
我想只显示genre = fruit的图片,所以现在我的表格如下:
| ID | Name | Genre |
--------------------------------
| 1 | Apple | Fruit |
--------------------------------
| 4 | Pear | Fruit |
--------------------------------
| 5 | Banana | Fruit |
--------------------------------
| 7 | Kiwi | Fruit |
由于ID不再是增量,我不能再使用$ id-1或$ id + 1来获取上一张/下一张照片。
这就是我的PHP代码的样子(本帖简化):
<?php
$sql = "SELECT * FROM photo WHERE genre LIKE '%fruit%' ORDER BY id DESC";
$result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR);
while ($rows = mysql_fetch_assoc($result)) {
$id=$rows['id'];
$name=$rows['name'];
$genre=$rows['genre'];
echo "<div id=\"img$id\">".
"<a href=\"#img".($id+1)."\"><</a>".
"<a href=\"#img".($id-1)."\">></a>".
"<img src=\"img/full/$name.jpg\">".
"</div>";
} // end while
?>
由于我正在加载所有水果照片,我不知道当前的ID是什么,我不知道总共会显示多少行。我想找到用户看到的当前行/照片之前和之后的行项ID。
我尝试过使用current(),next()和prev(),但它们似乎都只选择前3行。任何帮助将非常感激!一直在研究这个问题并且无法解决这个问题:(非常感谢提前。
答案 0 :(得分:1)
以下是带注释的示例代码:
$images = [];
while ($rows = mysql_fetch_assoc($result)) {
// first we store images in an array
$images[] = [
'id' => $rows['id'],
'name' => $rows['name'],
'genre' => $rows['genre'],
];
}
// next we iterate over this array
foreach ($images as $index => $image) {
echo '<div id="img' . $image['id'] . '">';
// as array is numerically indexed
// we can get previous item's index as `$index - 1`
// and check if it is set
if (isset($images[$index - 1])) {
// if it is set - we output it
echo '<a href="#img' . $images[$index - 1]['id'] .'"><</a>';
}
// as array is numerically indexed
// we can get next item's index as `$index + 1`
// and check if it is set
if (isset($images[$index + 1])) {
// if it is set - we output it
echo '<a href="#img' . $images[$index + 1]['id'] .'">></a>';
}
echo '<img src="img/full/' . $image['name'] . '.jpg">';
echo '</div>';
}