У меня есть две «кнопки» для перемещения курсора массива на следующую запись или на предыдущую запись. Функция с использованиемследующий«перейти к следующей (более старой) записи работает корректно.
Однако функция перехода к предыдущему («предыдущая«) запись (которая находится в верхней части массива) не работает правильно. Я подозреваю, что это может быть связано с использованием»mysqli_data_seek«Я верил, что он установит курсор на текущую позицию, а затем вернет к предыдущей записи. Вместо этого курсор продолжает двигаться вперед, как будто»следующий«был использован вместо»предыдущаяMsgstr «Как я могу вернуться к предыдущей записи?
function return_next_issue()
{
// Newer Issue - Moves up towards the top of the array.
// mysqli_data_seek($_SESSION['result'], 0);
while($row=mysqli_fetch_array($_SESSION['result'], MYSQL_NUM))
{
if($_SESSION['issuenum'] == $row[0])
{
break;
}
}
prev($_SESSION['result']);
$row=mysqli_fetch_row($_SESSION['result']);
return $row[0];
}
Поскольку объект mysqli_result находится в сеансе и используется совместно, вы можете инициализировать внутренний указатель на 0, чтобы убедиться, что вы будете искать с самого начала. Вы также можете создать переменную, которая будет увеличиваться в течение итерации, чтобы идентифицировать нужный вам индекс и искать предыдущий.
function return_next_issue()
{
// Newer Issue - Moves up towards the top of the array.
$i = 0;
mysqli_data_seek($_SESSION['result'], 0);
while($row=mysqli_fetch_array($_SESSION['result'], MYSQL_NUM))
{
if($_SESSION['issuenum'] == $row[0])
{
break;
}
$i++;
}
mysqli_data_seek($_SESSION['result'], $i - 1);
$row=mysqli_fetch_row($_SESSION['result']);
return $row[0];
}
Обратите внимание, что ваш код не будет работать, если $ _SESSION [‘issenum’] равен 0 или если количество доступных строк больше, и поэтому код, который я предоставляю, также работает.
Других решений пока нет …