我已经制作了一个有效的脚本,该脚本将将以前上传的图像(其标题,大小,类别等)加载到画廊中。看起来这样:https://i.stack.imgur.com/rwasu.jpg
问题是,我使它加载了一个随机ID的图像,右滑动/左滑动后将有更多这样的图像,我想通过ID显示它们,但彼此互相显示为下一个ID,而是是相同或随机的。我怎么能起作用?
这是到目前为止的脚本:
<?php
$result = mysql_query("SELECT id, rozmiar, technika, kategoria, image_time, title FROM {$table} ORDER BY RAND() LIMIT 1");
if (mysql_num_rows($result) == 0)
echo '<ul><li>Nie wgrano żadnych plików.</li>';
else
{
echo '<ul>';
while(list($id, $rozmiar, $technika, $kategoria, $image_time, $title) = mysql_fetch_row($result))
{
echo "<div class='image-frame left-image'>";
echo "<a href='".$_SERVER['PHP_SELF']."?show=$id' data-lightbox='galeria' data-title='{$title}, {$technika} | {$rozmiar}'><img width='450' src='".$_SERVER['PHP_SELF']."?show=$id'></a>";
echo "<div class='description'><p>{$technika}, {$rozmiar}</p></div></div>";
}
echo '</ul>';
}
?>
<?php
$result = mysql_query("SELECT id, rozmiar, technika, kategoria, image_time, title FROM {$table} ORDER BY RAND() LIMIT 1");
if (mysql_num_rows($result) == 0)
echo '<ul><li>Nie wgrano żadnych plików.</li>';
else
{
echo '<ul>';
while(list($id, $rozmiar, $technika, $kategoria, $image_time, $title) = mysql_fetch_row($result))
{
echo "<div class='image-frame right-image'>";
echo "<a href='".$_SERVER['PHP_SELF']."?show=$id' data-lightbox='galeria' data-title='{$title}, {$technika} | {$rozmiar}'><img width='450' src='".$_SERVER['PHP_SELF']."?show=$id'></a>";
echo "<div class='description'><p>{$technika}, {$rozmiar}</p></div></div>";
}
echo '</ul>';
}
?>
关于如何将其制作到一个脚本中的任何想法,它将带有带有ID的图像的多个块?将感谢所有建议。
解决方案就是这样:
-
在没有任何
ORDER BY
或LIMIT
子句的情况下从表中检索所有行,如下:SELECT id, rozmiar, technika, kategoria, image_time, title FROM {$table}
-
计算检索的行总数并创建一个空的
$resultArray
数组,例如:$rowCount = mysql_num_rows($result); $resultArray = array();
-
循环浏览结果集,并将行附加到
$resultArray
数组,如下:while($row = mysql_fetch_array($result)){ $resultArray[] = $row; }
-
使用
rand()
函数从$resultArray
数组中选择一个随机行,并从此$resultArray
数组实现圆形数组逻辑,以实现您所需的结果,例如:$i = $randValue = rand(0, $rowCount - 1); do{ list($id, $rozmiar, $technika, $kategoria, $image_time, $title) = $resultArray[$i]; echo "<div class='image-frame'>"; echo "<a href='".$_SERVER['PHP_SELF']."?show=$id' data-lightbox='galeria' data-title='{$title}, {$technika} | {$rozmiar}'><img width='450' src='".$_SERVER['PHP_SELF']."?show=$id'></a>"; echo "<div class='description'><p>{$technika}, {$rozmiar}</p></div></div>"; $i = ++$i % $rowCount; }while($i != $randValue);
这是完整的代码,
$result = mysql_query("SELECT id, rozmiar, technika, kategoria, image_time, title FROM {$table}");
$rowCount = mysql_num_rows($result);
$resultArray = array();
while($row = mysql_fetch_array($result)){
$resultArray[] = $row;
}
$i = $randValue = rand(0, $rowCount - 1);
do{
list($id, $rozmiar, $technika, $kategoria, $image_time, $title) = $resultArray[$i];
echo "<div class='image-frame'>";
echo "<a href='".$_SERVER['PHP_SELF']."?show=$id' data-lightbox='galeria' data-title='{$title}, {$technika} | {$rozmiar}'><img width='450' src='".$_SERVER['PHP_SELF']."?show=$id'></a>";
echo "<div class='description'><p>{$technika}, {$rozmiar}</p></div></div>";
$i = ++$i % $rowCount;
}while($i != $randValue);
sidenote:不使用mysql_*
功能,将它们弃用为php 5.5,并在PHP 7.0中完全删除。改用mysqli
或pdo
。这就是为什么您不应该使用mysql_*
函数的原因。