我有一个mysqli数据库,其中有一个用于标记的表和一个用于人的表。
在一个网页上,我显示了今年人们的记录列表:
SELECT * FROM markers m, people p WHERE m.MarkerID = p.MarkerID and p.Publish=1 and year(m.date) like '2015'当你点击列表中的一个人时,你会得到一个新的网页,其中使用php中的以下查询显示了该人的数据:
$name = $_POST['name'];
$newname = str_replace("_", " ", $name);
$q = "SELECT * FROM people p, markers m where p.MarkerID = m.MarkerID and p.Name = '" . $newname . "'";页面底部有箭头,您可以单击下一条记录和最后一条记录。
请问如何检索下一条或最后一条记录?下一条记录将是来自第一个查询的下一个按日期的记录;前一个记录将是来自第一个查询的前一个按日期的记录。
发布于 2015-05-14 05:41:45
这是目前未测试的。
让我知道你的想法,问任何问题。
$recs = 20; // number of records per page
$sql = "SELECT SQL_CALC_FOUND_ROWS * FROM markers m, people p WHERE m.MarkerID = p.MarkerID and p.Publish=1 and year(m.date) like '2015'";
$next = intval($_POST['next']);
$last = intval($_POST['last']);
if($last > 0){
$limit1 = $last - $recs;
$limit2 = $last + 1;
}
else{
$limit1 = $next;
$limit2 = $limit1 + $recs;
}
$query = "$sql LIMIT $limit1 $limit2";
$results = mysqli_query($link,$sql);
// do your existing page
$rows = mysql_num_rows($results);
if($rows == $recs)
$result = mysqli_query($link,"SELECT FOUND_ROWS()");
$more = mysqli_fetch_array($result , MYSQL_NUM);
}
$remaining = intval($more[0]);
$total = $remaining + $limit2;
$remaining -= ($limit1 + $recs);
$next += $recs + 1;
if($remaining > 0)
echo <<<EOF
<form action="#' method="post">
<input type="hidden" name="next" value="$next"/>
<button type="submit">Next</button>
</form>
<form action="#' method="post">
<input type="hidden" name="last" value="$total"/>
<button type="submit">Last</button>
</form>
EOF;
}发布于 2015-05-14 21:46:33
我认为这将为之前的记录做好准备:
$q = "select * from people v, markers m
where v.Publish = 1
and m.MarkerID = v.MarkerID
and m.date = (select max(m.date)
from markers m, victims v where m.MarkerID = v.MarkerID
and v.Publish = 1
and m.date < '" . $this_date . "')"https://stackoverflow.com/questions/30223062
复制相似问题