I am sending an id using the url. However, i can only access the $GET[‘id’] variable when the page loads. When I go on to submit the form, the variable is undefined. What could be the problem
if(isset($_GET['id'])) {
$tripId = htmlspecialchars($_GET['id']);
}
if (isset($_POST['submit'])) {
for($i = 0; $i < count($_POST['package']); $i++) {
//check if there are any errors before proceeding
if(array_filter($errors)) {
print_r($errors);
} else {
$package = mysqli_real_escape_string($con, $_POST['package'][$i]);
$price = mysqli_real_escape_string($con, $_POST['price'][$i]);
$sql = "INSERT INTO packages(tripId,packageName,packagePrice) VALUES('$tripId','$package','$price')";
}
//check and redirect
if(mysqli_query($con, $sql)) {
header('location: admin_home.php');
} else {
echo 'error' . mysqli_error($con);
}
}
}
Advertisement
Answer
When you build the form, the target should include the GET parameter too. This is how GET parameters are passed around. $_POST will be populated with the form fields, $_GET will be populated with whatever is in the url.
<?php $url = '/process.php?' . http_build_query(['id' => $yourIdHere]); ?> <form action="<?=$url;?>" method="POST"> <label for="package">Package:</label> <input type="text" id="package" name="package"><br><br> <label for="price">Price:</label> <input type="text" id="price" name="price"><br><br> <input type="submit" value="Submit" name="submit"> </form>