简体   繁体   中英

How to set the value associated with an <a> link as a session variable, when clicked

I have seen examples for this online, but it only seems to break my code. I want to be able to I would like to store a field queried, using the code below in a session variable.

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";
}

?>

This code can be used to return values from the database depending on the users input. It will return the "birdName" and allow the user to click a queried result to go to the "sort.php" page.

How would you store the returned field "birdName" once/before it's clicked in a session variable, so it can be accessed in the following page?

PS I understand my question is quite specific and unideal, but I'm seriously struggling to get this to work, and I'm quite desperate, thanks.

At the beginning of the script you need to put

session_start();

Then you can save all the bird names in an array in a session variable, by pushing each bird name from the database onto this array.

$_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 can then use session_start(); to continue the session, and access $_SESSION['birdNames'] to get all the bird names.

However, I suspect this isn't really what you want. If you want sort.php to just process the specific bird name that the user clicked on, you shouldn't use a session variable, it should be a URL parameter.

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

Then sort.php can use $_GET['id'] to get the ID of the bird that the user clicked on.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM