我有一个搜索结果,会产生搜索结果。每个结果都有一个与mysql中的id对应的标识。为了获得每个mysql字段的完整结果,我使用了一个指向fullresult.php的链接?id = 569
在检索结果时,我将所有相应的ID放在$ _SESSION [' ids']中,如下所示:
array(41) {
[0]=>
string(3) "569"
[1]=>
string(4) "1085"
[2]=>
string(3) "289"
[3]=>
string(3) "221"
当我在fullresult.php?id = 569显示的页面上时,我需要创建一个指向fullresult.php的链接?id = 1085。
尝试循环使用$ _SESSION [' ids'],尝试获取当前索引并转到下一个索引似乎无法正常工作。或者至少我不知道如何。
我目前这样做:
$id_now = $_GET['id'];
$liste_ids = $_SESSION['ids'];
if( ($ida_now = current($liste_ids)) !== FALSE){
$nxt = next($liste_ids);
echo$nxt;
}
问题是current($ liste_ids)总是569($ liste_ids中的第一个索引=>值)因此$ nxt始终是1085.
当我在fullresult.php上时,我想要做什么?id = 1085是要检索$ liste_ids的**下一行**,以便从$ liste_ids中检索289,依此类推。
答案 0 :(得分:1)
// Make sure the session is started
if(!session_id())
session_start();
// Make sure the user entered the id on the URL
if(empty($_GET["id"]))
die("Please enter the id of the result");
$resultId = $_GET["id"];
// Validate the id
if(!is_numeric($resultId))
die("Invalid id, it most be an integer");
if(empty($_SESSION["ids"]))
die("No ids to follow");
// First the index of the $resultId
$resultIndex = array_search($resultId, $_SESSION["ids"]);
if($resultIndex === false)
die("Couldn't find ". $resultId);
$resultIndex++;
if(empty($_SESSION["ids"][$resultIndex]))
die("Reached end");
else
echo "Your link is " . "/fullresult.php?id=" . $_SESSION["ids"][$resultIndex];
答案 1 :(得分:0)
这应该有效,
GET
参数如果您确定存在所有数组索引,则可以使其更容易。那就是,
$needle = $_GET['id']; //id in your url has value, not index.
$index = array_search('$needle', $array);//get the index.
$value = $array($index+1);
echo $value;
一般说来,当所有数组索引都存在时,可以使用它。
$needle = $_GET['id'];
$index = array_search('$needle', $array);
while (key($List) !== $index){
$value = next($index);
}
echo $value;
请测试代码,因为我没有测试过。此外,采取任何必要的防御措施。就像用户手动将url更改为不在数组中的值一样。等等。