单击时如何将与 <a> 链接关联的值设置为会话变量

Posted

技术标签:

【中文标题】单击时如何将与 <a> 链接关联的值设置为会话变量【英文标题】:How to set the value associated with an <a> link as a session variable, when clicked 【发布时间】:2016-03-22 20:18:05 【问题描述】:

我在网上看到过这方面的例子,但它似乎只是破坏了我的代码。我希望能够使用下面的代码在会话变量中存储查询的字段。

PHP:

<?php

// Collect input
// If an input has been given
if(isset($_POST["aSearch"])) 
  $searchq = $_POST["aSearch"];
  $searchq = preg_replace("#[^0-9a-z]#i","",$searchq); //Can only search words

// Select records if name's match
$sql = "SELECT * FROM birdt WHERE birdName LIKE '%$searchq%'";


// Tests if connection is made to the db to query it
if ($conn->query($sql)=== TRUE)
  echo "The rows you have searched for are:";
 else 
  echo "Connection failed: ";
  echo $conn->error;


// Show fields
$result = $conn->query($sql);

// Output data of each row
if ($result-> num_rows> 0) 
  readfile("ViewReturn.html");
  while($row = $result-> fetch_assoc()) 
    // redirect the user to a new page
    echo "<a href='sort.php'> Bird Name: ".$row["birdName"]. "</a><br><br>"; // Important row 
  
 else 
  echo "0 results";


?>

此代码可用于根据用户输入从数据库返回值。它将返回“birdName”并允许用户单击查询结果进入“sort.php”页面。

您将如何在会话变量中单击/之前存储返回的字段“birdName”一次,以便可以在以下页面中访问它?

附:我知道我的问题非常具体且不理想,但我很难让它发挥作用,我非常绝望,谢谢。

【问题讨论】:

session_start(); $_SESSION['var'] = $x; @Fred-ii- 感谢您的帮助,但仍然没有运气,它会改变我的代码吗? session_start(); $_SESSION['var'] = $birdName;如果分配的值是数据库中的字段,这仍然有效吗? 在您的while 循环中,将一行分配给会话数组。所以你可以做$_SESSION['var'] = $row["birdName"]; 类型的事情,然后echo $var = $_SESSION['var']; 应该可以工作。 【参考方案1】:

在脚本的开头你需要放

session_start();

然后,您可以将数据库中的每个鸟名推送到该数组中,从而将所有鸟名保存在会话变量中的数组中。

$_SESSION['birdNames'] = array();

if ($result-> num_rows> 0) 
  readfile("ViewReturn.html");
  while($row = $result-> fetch_assoc()) 
    // redirect the user to a new page
    $_SESSION['birdNames'][] = $row['birdName'];
    echo "<a href='sort.php'> Bird Name: ".$row["birdName"]. "</a><br><br>"; // Important row 
  
 else 
  echo "0 results";

sort.php 然后可以使用session_start(); 继续会话,并访问$_SESSION['birdNames'] 以获取所有鸟名。

但是,我怀疑这并不是您真正想要的。如果你想让sort.php 只处理用户点击的特定鸟名,你不应该使用会话变量,它应该是一个 URL 参数。

echo "<a href='sort.php?id=" . $row["id"] . "'> Bird Name: ".$row["birdName"]. "</a><br><br>";

那么sort.php可以使用$_GET['id']获取用户点击的鸟的ID。

【讨论】:

感谢您的帮助。关于URL参数,我是否可以在下面的“sort.php”页面中使用“$_GET['id]”中的值来查询用户点击的特定记录? 是的,这正是我在回答的最后一行所说的。

以上是关于单击时如何将与 <a> 链接关联的值设置为会话变量的主要内容,如果未能解决你的问题,请参考以下文章

单击 <a> 链接时如何显示确认对话框?

单击链接并重定向时,如何添加活动类?

是否可以将与不同行名关联的值添加在一起,同时保持其他行不变?

如何单击其href在Selenium中具有某个子字符串的链接?

如何通过单击链接使用 JavaScript 提交表单?

在c#中单击<a href>对象时如何获取ispostback = true