如何制作包含链接的列表?

时间:2014-11-22 13:54:09

标签: php list session

我正在制作一个包含名称和链接的列表,以获取有关它们的完整信息。所以,我有简单的搜索引擎,搜索名称或具体数字。我使用$ _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 =

1 个答案:

答案 0 :(得分:0)

我理解你的问题的方式是你有两页。一个页面用于搜索,另一个页面显示&#34;更多信息&#34;关于具体结果。

您在搜索中基本上做的是: 让我们假设您有三个结果得到Id 1,4,7。

这就是你的while循环中会发生的事情

  1. 设置$ name $ student_code和$ _SESSION [&#39; user_id&#39;]( $ _ SESSION [&#39; user_id&#39;]现在为1
  2. 准备第一个结果
  3. 设置$ name $ student_code和$ _SESSION [&#39; user_id&#39;]( $ _ SESSION [&#39; user_id&#39;]现在为4
  4. 准备第二个结果
  5. 设置$ name $ student_code和$ _SESSION [&#39; user_id&#39;]( $ _ SESSION [&#39; user_id&#39;]现在为7
  6. 准备第三个结果
  7. 正如您所看到的,您总是会覆盖会话密钥,因此当您到达&#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'];
    

    希望有所帮助:)