我正在制作一个包含名称和链接的列表,以获取有关它们的完整信息。所以,我有简单的搜索引擎,搜索名称或具体数字。我使用$ _SESSION来获取人们的身份。问题是,当有超过1个名称并且我移动到特定人的页面时,会出现列表中最后一个人的页面! 所以,搜索引擎的代码是:
if(isset($_POST['search'])){
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9_a-z A-Z]#i","",$searchq);
$query = mysql_query("SELECT * FROM contract WHERE name LIKE '%$searchq%' OR student_code LIKE '%$searchq%'") or die("could not search");
$count = mysql_num_rows($query);
if($count == 0){
$output = 'There was no such results!';
}
else{
while($row = mysql_fetch_array($query)){
$name = $row['name'];
$student_code = $row['student_code'];
$_SESSION['users_id'] = $row['users_id'];
$output = '<table border ="1"><tr><td>'.$name.' '.$student_code.'
</td>
<td>
<form action="cont.php" method="post">
<label>Look at the contract:</label>
<input type="submit" name="submit" value=">>">
</form>
</td>
</tr>
</table><br \>
页面文件中的另一个脚本:
$users_id = $_SESSION['users_id'];
$result = mysql_query("SELECT * FROM contract WHERE users_id = $users_id");
while($myrow = mysql_fetch_array($result)){
$output1 =
答案 0 :(得分:0)
我理解你的问题的方式是你有两页。一个页面用于搜索,另一个页面显示&#34;更多信息&#34;关于具体结果。
您在搜索中基本上做的是: 让我们假设您有三个结果得到Id 1,4,7。
这就是你的while循环中会发生的事情
正如您所看到的,您总是会覆盖会话密钥,因此当您到达&#34; cont.php&#34;时,只有最后一个密钥可用。页面(我在猜猜其他代码是什么?)
一个简单的解决方案是将id烘焙到表单中,并在请求中将其发送到cont.php页面。像这样:
<form action="cont.php" method="post">
<label>Look at the contract:</label>
<input type="submit" name="submit" value=">>">
<input type="hidden" name="user_id" value="' . $row['users_id'] . '">
</form>
然后在cont.php中你只需改变它:
$users_id = $_SESSION['users_id'];
到这个
$users_id = $_POST['users_id'];
希望有所帮助:)