处理一个简单的订单表单php

rbl8hiat  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(311)

我正在从数据库中获取所有产品,并用输入的数字显示它们,名称如下: name="product_name[<?php $row['id'];?>]" 在提交时,我将产品id及其数量的数组发送到handler页面,我的问题是如何从数据库中选择相关id,然后将它们与数量一起显示出来以确认订单。
订单表单.php

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

session_name("user");
session_start();
include 'includes/con.inc.php';
?>

<form class="" action="handlers/confirm.order.hd.php" method="POST">

<h5>Meal Deal</h5>
<div class="row">
<?php       

    $load_deals = $dbh->prepare("SELECT * FROM products WHERE category = :category");
    $load_deals->bindValue(':category', 'lunchbox', PDO::PARAM_STR);

    if($load_deals->execute()) {
         $load_deals->setFetchMode(PDO::FETCH_ASSOC);
    }

    while($row = $load_deals->fetch()) { 

        $id = $row['id'];
        $name = $row['name'];
        $price = $row['price'];
        $des = $row['description'];
        $img = $row['image'];

        ?>

        <div class="col-md-4 mb-3">
        <div class="item-holder" id="<?php echo $id;?>">
          <label class=""><b><?php echo $name;?></b> - <?php echo $price;?> AZN <small><?php echo $des; ?></small></label>
          <input type="number" name="deals[<?php $row['id'];?>]" class="amount" placeholder="0">
        </div>
        </div>

        <?php } ?>

</div>
    <h5>Sandwiches</h5>

<div class="row">
<?php       

    $load_sandwiches = $dbh->prepare("SELECT * FROM products WHERE category = :category");
    $load_sandwiches->bindValue(':category', 'Sandwich', PDO::PARAM_STR);

    if($load_sandwiches->execute()) {
         $load_sandwiches->setFetchMode(PDO::FETCH_ASSOC);
    }

    while($row = $load_sandwiches->fetch()) { 

        $id = $row['id'];
        $name = $row['name'];
        $price = $row['price'];
        $des = $row['description'];
        $img = $row['image'];

        ?>

        <div class="col-md-4 mb-3">
        <div class="item-holder" id="<?php echo $id;?>">
          <label class=""><b><?php echo $name;?></b> - <?php echo $price;?> AZN <small><?php echo $des; ?></small></label>
          <input type="number" name="sandwiches[<?php $row['id'];?>]" class="amount" value="0">
        </div>
        </div>

        <?php } ?>
</div>
    <h5>Drinks</h5>
<div class="row">
<?php       

    $load_drinks = $dbh->prepare("SELECT * FROM products WHERE category = :category");
    $load_drinks->bindValue(':category', 'Drink', PDO::PARAM_STR);

    if($load_drinks->execute()) {
         $load_drinks->setFetchMode(PDO::FETCH_ASSOC);
    }

    while($row = $load_drinks->fetch()) { 

        $id = $row['id'];
        $name = $row['name'];
        $price = $row['price'];
        $des = $row['description'];
        $img = $row['image'];

        ?>

        <div class="col-md-4 mb-3">
        <div class="item-holder" id="<?php echo $id;?>">
          <img src="imgs/<?php echo $img;?>" class="img-fluid"> 
          <label class=""><b><?php echo $name;?></b> - <?php echo $price;?> AZN <small><?php echo $des; ?></small></label>
           <input type="number" name="drinks[<?php $row['id'];?>]" class="amount" value="0">
        </div>
        </div>

        <?php } ?>

</div>

<button class="btn btn-primary mx-auto w-50 mb-3 d-block" type="submit"> confirm order</button>

</form>

确认.order.hd.php

<?php 

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

session_name("goodfooduser");
session_start();
include '../includes/con.inc.php'; 

$deals = $_POST['deals'];
$sandwiches = $_POST['sandwiches'];
$drinks = $_POST['drinks'];

$id_list = array_merge($deals , $sandwiches , $drinks);
$split_list = implode(',', $id_list);

    $get_product = $dbh->prepare("SELECT * FROM products WHERE id = :id ");
    $get_product->bindValue(':id', $split_list);

    if($get_product->execute()) {
         $get_product->setFetchMode(PDO::FETCH_ASSOC);
    }

    while($row = $get_product->fetch()) { 
        $product_id = $row['id'];
        $product_name = $row['name'];

        $output = array(
            'id' => $product_id, 
            'item' => $product_name, 
            'amount' => $value, 
        );  

        print_r($output);
    }

?>
8xiog9wr

8xiog9wr1#

在order confirm页上绑定sql查询时,应该使用string,因为您传递的是单个占位符的值 :id 通过 implode(',',$id_list) 你的价值观,它应该工作良好

相关问题