/* .*/
$sqlConditions = " WHERE name ='test' " ;
$sqlOrder = " ORDER BY name, surname" ;
$curId = 33; //ID
/* , , id */
$sql = "SELECT rownumb,id FROM (
SELECT
@rownumb := @rownumb+1 AS rownumb,
`Contact`.`id` FROM `contacts` AS `Contact`
,(SELECT @rownumb := 0) al
$sqlConditions $sqlOrder
) AS src " ;
/* */
$rowNumber = $ this ->query($sql. " WHERE src.id = $curId" );
/* */
if (!empty($rowNumber[0][ 'src' ][ 'rownumb' ])) {
$rowNumber = $rowNumber[0][ 'src' ][ 'rownumb' ];
} else {
return false ;
}
if ($rowNumber > 1) { /* $rowNumber > 1 ( )*/
/* rownumb*/
$res = $ this ->query($sql. " WHERE id <> $curId LIMIT " .($rowNumber - 2). " ,2" );
/* prevId*/
if (!empty($res[0][ 'src' ][ 'id' ])){
$result[ 'prevId' ] = $res[0][ 'src' ][ 'id' ];
}
/* NextId */
if (!empty($res[1][ 'src' ][ 'id' ])){
$result[ 'nextId' ] = $res[1][ 'src' ][ 'id' ];
}
} else { /* $rowNumber == 1 */
/* */
$res = $ this ->query($sql. " WHERE rownumb > $rowNumber LIMIT 1" );
/* NextId*/
if (!empty($res[0][ 'src' ][ 'id' ])){
$result[ 'nextId' ] = $res[0][ 'src' ][ 'id' ];
}
}
* This source code was highlighted with Source Code Highlighter .
Source: https://habr.com/ru/post/114372/