xiaozaiz
xiaozaiz

Reputation: 69

Calling PHP via a HTML anchor on the same page

I am currently reading through a piece of code provided by my faculty and I am having troubles understanding how it works. Specifically how the anchor is linked to the php without method="post" or method="get". Kindly appreciate if anyone could explain or link me to relevant materials to do further readings. Much thanks.

if (!isset($_SESSION['cart'])){
    $_SESSION['cart'] = array();
}
if (isset($_GET['buy'])) {
    $_SESSION['cart'][] = $_GET['buy'];
    header('location: ' . $_SERVER['PHP_SELF']. '?' . SID);
    exit();
}

for ($i=0; $i<count($items); $i++){
    echo "<tr>";
    echo "<td>" .$items[$i]. "</td>";
    echo "<td>$" .number_format($prices[$i], 2). "</td>";
    echo "<td><a href='" .$_SERVER['PHP_SELF']. '?buy=' .$i. "'>Buy</a></td>";
    echo "</tr>";
}

Upvotes: 0

Views: 300

Answers (1)

Konrad Słotwiński
Konrad Słotwiński

Reputation: 699

Cart for bought items indexes is created in session if it's not there yet.

if (!isset($_SESSION['cart'])){
    $_SESSION['cart'] = array();
}

When link with buy query parameter is opened, buy value is added to session cart. After that page is redirected to location without buy parameter.

if (isset($_GET['buy'])) {
    $_SESSION['cart'][] = $_GET['buy'];
    header('location: ' . $_SERVER['PHP_SELF']. '?' . SID);
    exit();
}

List of items to buy is printed on page (i quess code in question is not full).

for ($i=0; $i<count($items); $i++){
    echo "<tr>";
    echo "<td>" .$items[$i]. "</td>";
    echo "<td>$" .number_format($prices[$i], 2). "</td>";
    echo "<td><a href='" .$_SERVER['PHP_SELF']. '?buy=' .$i. "'>Buy</a></td>";
    echo "</tr>";
}
  1. Links open pages with GET method.

  2. Link query parameters can be accessed by special $_GET variable

Upvotes: 1

Related Questions