joebegborg07
joebegborg07

Reputation: 839

PHP - Pass anchor tag value to target page

TL:DR - I need to pass an anchor tag value to another php page and looking for alternatives to SESSION / COOKIES. Going for forms with POST/GET is discouraged as I would like to avoid having to submit.

Detailed description:

I have a php page which lists a mysqli result set in list form as per the following:

ID fname surname


12 John Doe

13 Carl Brown

Now I would like to have the ID field as a link, which I can achieve using an an HTML anchor tag. Once clicked I would like to redirect to another page and pass the clicked ID (e.g. 12 or 13) for further use.

I know this is achievable through cookies or sessions, but I wanted to check if perhaps there's another way of doing this. Also I would like to avoid forms in order to avoid having to 'submit' the actual form. I'd like to keep the experience as a click and redirect.

To give some context here is my php code:

<?php
include 'functions.php';
    session_start(); //Fetches session already initialized in other pages.
    $page_fund=new page_fundementals; //simply gets menu items
    $conn = new consultant_ops; //executes a mysqli query to get the results used further below
    $result=$conn->listPatients($_SESSION['user_id']); //passes the $_SESSION['user_id'] to a listPatients method in order to get the mysqli resultset
    foreach($result as $row){
        $i=0;
        ${'p_id'.$i}=$row['p_id'];
        ${'p_fname'.$i}=$row['p_fname'];
        ${'p_surname'.$i}=$row['p_surname'];
        echo ${'p_id'.$i}." ".${'p_fname'.$i}."<br />";
        $i++;
    }
?>

Upvotes: 0

Views: 3706

Answers (3)

Conal Mittal
Conal Mittal

Reputation: 141

In anchor tag you can specify query params for eg

<a href="todo.php?id=12"> 12 </a>

In this case, when a user clicks on 12 he will be redirected to todo.php?id=12.

In todo.php you can fetch $_GET['id'] and work accordingly.

Upvotes: 1

Jasper Martin
Jasper Martin

Reputation: 180

have an anchor tag like this

<a href="sample.php?id=<?= $user->id ?>">
   <?= $user->name ?>
</a>

then maybe in your sample.php

<?php
    if(isset($_GET['id']) {
        $user_id = $_GET['id'];
        /* your code here to get user from database, maybe 
       SELECT * FROM users WHERE id = $user_id something like that
       then format afterwards */
    }
?>

maybe something like that

Upvotes: 2

Mike Volmar
Mike Volmar

Reputation: 2093

Why not pass variable in a GET request?

echo "<a href='page.php?pid=".$row['p_id']."'>redirect</a>";

which you can access on the target page.php

$pid = $_GET['pid'];

Upvotes: 1

Related Questions