Php:如果达到第一条记录则显示内容

时间:2017-07-20 20:40:31

标签: php mysqli

我有一个数据库,它有10多条记录:

Accid    |    Firstname    |    Lastname
1.              John                  Marshall
2.              Sherlock            Holmes
3.              Random            Dude
...

我在php上使用echo显示这个但是使用AJAX ...它首先加载5个用户,当用户在页面底部滚动时,它将在列表中加载另外5个(它添加了偏移值+ = 5)。这是我的显示代码:

$sql = "SELECT * FROM users ORDER BY lastname DESC LIMIT 5 OFFSET 5";
$result = mysqli_query($connection,$sql);

While($row=mysqli_fetch_assoc) {
    echo $row['lastname']." ".$row['firstname']."<br/>";
 }

如果我有100个用户可以说,这个列表可能会很长。 只要用户在底部滚动,就会弹出另外5个用户。现在,如果我到达USERS数据库中的整个记录​​的末尾,我想显示类似的内容 - “用户列表结束”

我怎样才能做到这一点?

Jquery代码

$.ajax({
   type: "GET",
   url: "getusers.php",
   data: {
      'offset': 4
   },
success: function(data){
   $('#displayusers').append(data);
}
});

2 个答案:

答案 0 :(得分:3)

我想不同意@PressingOnAlways的答案。

您可以从PHP发回不同的响应,并在javascript中进行检查。

$sql = "SELECT * FROM users ORDER BY lastname DESC LIMIT 5 OFFSET 5";
$result = mysqli_query($connection,$sql);

if(mysqli_num_rows($result) == 0){
  die("last");
}

While($row=mysqli_fetch_assoc) {
    echo $row['lastname']." ".$row['firstname']."<br/>";
 }

现在你可以在javascript中查看它:

if(response == "last"){
  mydiv.append('This is the end');
}

现在,我想向您展示我做事的方式,其中(imo)更清洁:

首先,你的ajax调用

我们将确保从现在开始我们的数据将自动采用json格式:

  $.ajax({
    type: 'GET',
    url: "getusers.php",
    cache: false,
    data: {'offset': 4},
    dataType: "json"
  }).done(function(json){

    if(json.hasOwnProperty("last"){
      //No more results
      //do your thang;
      return false;
    }

    if(getLength(json) < 5){
      //Smaller then 5, must have hit the last. Do your thang;
      return false;
    }

    //It came here, so it's all good. Go on
    $('#displayusers').append(data);
  });

其次:您的PHP方

从来没有一个好的计划来通过AJAX回应html。它比在PHP中更有效率(通过互联网高速公路占用较少的服务次数+发送少量数据)。

$sql = "SELECT * FROM users ORDER BY lastname DESC LIMIT 5 OFFSET 5";
$result = mysqli_query($connection,$sql);
$lastResponse = array("last" => "last");

if(mysqli_num_rows($result) == 0){
  //Always send back json or it'll give you an error
  die(json_encode($lastResponse));
}

$return = array();

While($row=mysqli_fetch_assoc) {
    $return[] = $row['lastname']." ".$row['firstname'];
 }

echo json_encode($return);

第三:用于检查arrayLength

的js函数
//Checks the length of a json object or array
//Returns false if length is 0 or unable to check it
function getLength(obj) {
  if (typeof obj == 'undefined') {
    return false;
  }
  var l = 0;
  if (typeof obj == 'object') {
    l = Object.keys(obj).length;
  }
  else {
    l = obj.length;
  }
  return (l == 0 ? false : l);
}

答案 1 :(得分:0)

实现此功能的最佳位置是JS客户端。由于您的PHP脚本无法知道它是否是列表的末尾,您需要在客户端上执行此操作。 JS代码应检查从php脚本返回的结果是否小于5,如果是,那么&#34;用户列表结束&#34;应该打印出来。