I have a code for a Canteen Menu and cart system. After the user selects items from the menu and clicks on the purchase button, they get an Order Summary of sorts, which is dynamically coded as a form with an Order button acting like a submit button. When I use isset() in the php document to tell it what to do once Order is clicked, it returns true even when the form hasn't appeared, and there IS no submit button to click.
<?php
if(isset($_POST['ORDER'])){
echo "Hi";
}
?>
This gives me 'Hi' even when the user hasn't purchased anything, the order summary or the order button with the name 'ORDER' hasn't yet appeared. The following is my Javascript code for dynamically changing the cart to an Order Summary and back
function array(){
title=document.getElementsByClassName("cafe")[1];
alternate_title=`<br>
<center><h1>Order Summary</h1></center>
<br>`
title.innerHTML=alternate_title;
name=document.getElementsByClassName("cus_name")[0].textContent;
console.log(name);
order=[];
var cartRows=document.getElementsByClassName('cart-items')
for(var i=0;i<cartRows.length;i++){
var cartRow=cartRows[i];
var nameElement=cartRow.getElementsByClassName("item-name")[0];
var name=nameElement.textContent;
var quantityElement=cartRow.getElementsByClassName("quantity")[0];
var quantity=parseFloat(quantityElement.value);
item=[name,quantity];
order.push(item);
}
var contents=`<form method="post"><div class="centered">`
for(var i=0;i<order.length;i++){
contents=contents+`<div class="cart-items" style="display: flex;">
<div style="width:2em;">${i+1}.</div>
<div><input type="text" value="${order[i][0]}" name="pdt_name[]"></div>
<div><input type="number" value="${order[i][1]}" name="pdt_qty[]"></div>
<div></div>
</div><br>`;
}
contents=contents+`<br><center><input type="submit" name="ORDER" class="a" value="Order"></center></div></form>`;
var half=document.getElementsByClassName("bill")[0];
half.innerHTML=contents;
document.getElementsByClassName("e")[0].addEventListener("click", goBack) ;
function goBack(){
title=document.getElementsByClassName("cafe")[1];
alternate_title=`<br>
<center><h1>Cart</h1></center>
<br>`
title.innerHTML=alternate_title;
contents=`<div class="bg">
<div class="all-items">
</div>
<hr>
</div>
<div class="eh"><h2><center>Total: <span class="total">Rs. 0</span></center></h2></div>
<br>
<center><input type="submit" value="Purchase" class="c"></center>
</div>`
var half=document.getElementsByClassName("bill")[0];
half.innerHTML=contents;
}
}
Is there a reason for this? How can this be overcome?