Create 2 files:
One with the actual form populated by the DB:
<?php while($row=mysqli_fetch_array($result)) { ?>
<div id="item">
<form method="post" action="cartReceiver.php">Quantity:
<?php echo '<img height="200" width="200" src="data:image;base64,'.$row[2]. '">';?>
</br>
<?php echo $row[ "name"];?>
</br>
<?php echo $row[ "price"];?>
</br>
<?php echo $row[ "description"];?>
</br>
<input type="text" value="" name="quantity" />
</br>
<input type="submit" value="add to cart" name="cart" />
</form>
</div>
<?php }//end of while ?>
And then the receiver of the action declared in form(cartReceiver.php):
<?php
if (isset($_POST[ "cart"])){
$addtoname=$_SESSION[ 'username'];
$addtoprice=$row[ 'price'];
$addtodiscount=$row[ 'discount'];
$addtoid=$row[ 'id'];
$addtoimage=$row[ 'image'];
$addtoquantity=$_POST[ 'quantity'];
$hostname="localhost" ;
$username="root";
$password="" ;
$database="myproject" ; $con=mysqli_connect($hostname,$username,$password,$database) or die(mysqli_error());
$select=mysqli_select_db($con, "myproject")or die( "cannnot select db"); mysqli_query($con,"INSERT INTO cart(username,quantity,price,image,id,discount) VALUES('$addtoname','$addtoquantity','$addtoprice','$addtoimage','$addtoid','$addtodiscount')");
echo "success";
}
else{
echo "fail";
}
Note that I changed the tag order of the form. If you wish to receive the fetched parameters from POST without querying the DB after transition, then you can change the first file like this:
<?php while($row=mysqli_fetch_array($result)) { ?>
<div id="item">
<form method="post" action="cartReceiver.php">Quantity:
<?php echo '<img height="200" name="image" width="200" src="data:image;base64,'.$row[2]. '">';?>
</br>
<input type="text" name="username" value="<?php echo $row[ "name"];?>" readonly />
</br>
<input type="text" name="price" value="<?php echo $row[ "price"];?>" readonly />
<input type="hidden" name="discount" value="<?php echo $row[ "discount"];?>" />
</br>
<input type="text" name="description" value="<?php echo $row[ "description"];?>" readonly />
</br>
<input type="text" value="" name="quantity" />
</br>
<input type="submit" value="add to cart" name="cart" />
</form>
</div>
<?php }//end of while ?>
So the cartReceiver.php file will look like this in this case:
<?php
if (isset($_POST[ "cart"])){
$addtoname=$_POST['username'];
$addtoprice=$_POST['price'];
$addtodiscount=$_POST['discount'];
$addtoid=$_POST['id'];
$addtoimage=$_POST['image'];
$addtoquantity=$_POST[ 'quantity'];
$hostname="localhost" ;
$username="root";
$password="" ;
$database="myproject" ; $con=mysqli_connect($hostname,$username,$password,$database) or die(mysqli_error());
$select=mysqli_select_db($con, "myproject")or die( "cannnot select db"); mysqli_query($con,"INSERT INTO cart(username,quantity,price,image,id,discount) VALUES('$addtoname','$addtoquantity','$addtoprice','$addtoimage','$addtoid','$addtodiscount')");
echo "success";
}
else{
echo "fail";
}
Notice the readonly attirbute in the inputs. It will prevent the users from altering their contents.
Now you can access all the inputs after you submit the form (click the add to cart button) by using $_POST['name'],$_POST['description'] etc
EDIT: Code updated for your needs. Since it seems you dont want to display the discount, you pass it to the form through a hidden field which can be then accessed as the others through $_POST.