У меня есть фотогалерея с предыдущей и следующей ссылкой. Когда он добирается до последнего изображения, он останавливается. Я хочу, чтобы это началось с первого снимка. Функция является циклом for, и я думаю, что это должен быть цикл while, и некоторые вещи изменились, чтобы сделать его бесконечным циклом. Я просто не знаю, как преобразовать эту функцию. Все еще не так силен в PHP. Любая помощь приветствуется.
$query = "SELECT pho_id FROM album_photos WHERE alb_id='$alb_id' ORDER by srt_id ASC";
$ret = mysql_query($query);
$num = mysql_numrows($ret);
for ($i = 0; $i < $num; $i++)
{
$row = trim(mysql_result($ret, $i));
if ($row == $pho_id)
{
$cur = $i;
$forw = @trim(mysql_result($ret, ($i+1))) or $forw = NULL;
$back = @trim(mysql_result($ret, ($i-1))) or $back = NULL;
}
}
$query = "SELECT * FROM photos WHERE pho_id='$back'";
$rets = mysql_query($query);
$back_good = mysql_numrows($rets);
$query = "SELECT * FROM photos WHERE pho_id='$forw'";
$rets = mysql_query($query);
$forw_good = mysql_numrows($rets);
$back = "photo-$per_id-$back-$alb_id.html";
$forw = "photo-$per_id-$forw-$alb_id.html";
if (strstr($back, 'pho_id=&') || $back_good == 0) { $back = NULL; }
if (strstr($forw, 'pho_id=&') || $forw_good == 0) { $forw = NULL; }
$ret = array();
$ret['back'] = $back;
$ret['next'] = $forw;
$cur++;
$ret['viewing'] = "Photo $cur of ".($num);
if($ret['back'] == NULL){
$ret['back'] = "";
$spacer = str_repeat(' ',12);
}
if($ret['next'] == NULL){
$ret['next'] = "";
$spacer = str_repeat(' ',12);
}
Я предлагаю изменить ваш цикл, если это будет такой контент.
$cur = $i;
//compute the indexes of the next and previous elements
//the next item is the first if we are at the end.
$forward_index = $i == $num - 1 ? 0 : $i + 1;
//the previous one is the last if we are at the beginning.
$backward_index = $i === 0 ? $num - 1 : $i - 1;
//fetch the elements
$forw = @trim(mysql_result($ret, $forward_index));
$back = @trim(mysql_result($ret, $backward_index));
//exit the for loop
break;
Правда, вы могли бы превратить цикл for в цикл while. Однако абсолютной необходимости в этом нет. Я добавил оператор break, чтобы выйти, как только вы найдете элемент, который хотите загрузить.
Изменить: зафиксировал код в соответствии с комментарием OP. Глупая ошибка