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

标签 php mysql mysqli

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

order_form.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);
    }


?>

最佳答案

在绑定(bind)您的 sql 查询时,在订单确认页面上,您应该使用字符串,因为您传递的是单个占位符的值,即 :id

implode(',',$id_list) 传递到您的 bindValue 中,它应该可以正常工作

关于php - 处理一个简单的订单表单 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50655312/

相关文章:

php - 如何在 PHP、HTML 标签中回显

javascript - Jquery 倒计时在 Safari 中显示 NaN,在 Chrome/Firefox 中工作正常

php - @PrePersist 在 merge() 中调用,但不在 persist() 中调用 : what Lifecycle callback should I use?

php - 通过连接排序规则而不是结构排序规则对 mysql 结果进行排序

php - 如何使用 PHP 显示 SUM(行) 的值?

php - 我如何在同一页面上有多个帖子,以便我可以根据每个帖子查询同一个表?

php - 使用 CodeIgniter 2 发送电子邮件时出现 PHP 错误/警告

javascript - Onchange Select 使用 AJAX 发送多个数据进行不同的 mysql 查询

mysql - 关机后保存 MySQL 数据包大小

php - 在一段时间后刷新 PHP Mysqli 查询,for 循环?