SQL ORDER BY date AS C опускает запись для отображения - PullRequest
0 голосов
/ 03 мая 2020

Попытка отобразить список записей с помощью следующего сценария:

$start=0;
$limit=20;

if(isset($_GET['page']))
{
$page_id=$_GET['page'];
$start=($page_id-1)*$limit;
}

$_SESSION['pageid'] = $page_id; /* to send to edit page */ 

$rows=mysqli_query($link, "SELECT * FROM subscribers");

$rows=mysqli_num_rows($rows);

if ($rows == 0) {$total = 1;}

else if ($rows > 0)
{$total=ceil($rows/$limit);}

?>

<table align="center" cellpadding="2" style="width:25%;">

<tr>
<td><b>Log Id</b></td>
<td><b>Name</b></td>
<td><b>Expiry</b></td>
</tr>

<?php

$sql = "SELECT log_id, name, expiry FROM subscribers ORDER BY expiry ASC LIMIT $start, $limit";

$result = mysqli_query($link,$sql);

$total_sub = mysqli_num_rows($result);

if ($total_sub > 0) {

while($row = mysqli_fetch_assoc($result)) {

?>

<tr>
<td><?php echo $row["log_id"]; ?></td>
<td><?php echo $row["name"]; ?></td>
<td><?php echo $row["expiry"]; ?></td>
<td><a href="edit.php?id=<?php echo $row['log_id'] ?>"><img src='img/edit.png' height='15'></a></td>

</tr>
<?php
  }  
  }  
?>

<tr><td align="center" colspan="4">
<?php
if($page_id > 1){
echo "<a href='?page=".($page_id-1)."'><img src='img/previous.png'></a>";
}

echo " ".$page_id."/".$total." ";

if($page_id!=$total){
echo "<a href='?page=".($page_id+1)."'><img src='img/next.png'></a>";
}

?>
</td></tr></table>

Условие 1:

  • Ограничение страницы установлено на 20 записей на странице

  • Отображение порядка по дате истечения срока действия DES C

  • Пользователь 1, 2 и 3 имеют одинаковые даты (2020-11 -28).

Result of Condition 1

  • user1 и user2 (являющиеся 19-й и 20-й записями) отображаются на странице 1, а user3 отображается на стр. 2.

  • Нет проблем.

Условие 2:

  • То же, что и Условие 1, за исключением того, что порядок отображения по истечении срока действия теперь установлен на AS C.

Result of Condition 2

  • на странице 1 отображается user1 (поскольку он становится 20-я запись теперь из-за изменения порядка).

  • стр. 2 отображает user1 (снова) и user3. Возникает проблема: пользователь 2 в этом случае вообще не отображается.

Условие 3:

  • То же, что и условие 2, за исключением у пользователя user1 теперь другая дата (2020-11-27), а у пользователей user2 и 3 одинаковые старые даты (2020-11-28).

Result of Condition 3

  • Пользователи 1,2,3 отображаются корректно, даже если порядок AS C. Нет проблем.

Условие 4:

  • Ограничение на страницу установлено в 22 записи на страницу (таким образом, пользователи 1,2,3 может отображаться на той же странице).

  • у пользователей 1, 2 и 3 снова совпадают даты (2020-11-28).

  • Порядок отображения по дате истечения срока действия все еще равен AS C, что, похоже, вызывает проблему.

Result of Condition 4

  • пользователей 1,2, 3 отображаются правильно, даже если порядок AS C. Нет проблем.

Не можете понять, что является причиной проблемы в условии 2, если используется порядок AS C? Спасибо и извините за длинный вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...