php - 下订单并接收附带的reservation_id SQL、PHP、html5 表单

标签 php html mysql sql database

我有几种形式:

在第一个表单中我输入: 预订日期、客户信息以及我为该日期分配的餐 table 。

我输入的第二种形式: 接受订单的数据,我输入日期和表格,我想知道哪个预订 ID 与其相关联。

现在我不知道如何执行此操作,因为使用以下查询未从预订表中提取预订日期、table_number 和预订 ID:

SELECT o.OrderID
        , o.MenuItemID
        , o.ReceiptID 
        , r.Res_Datum
        , r.Tafel_Id
        , r.Reservering_Id 
     FROM Orders o
     JOIN reserveringen r
       ON o.Res_ID = r.Reservering_Id 
    GROUP 
       BY o.Res_Datum
        , o.Res_ID 
        , o.Tafel_Id

这个查询确实有效:

$sql = "
SELECT O.Res_Datum
     , O.Res_ID
     , O.Tafel_Id
     , O.ReceiptID
     , SUM(MI.ItemPrice) TotalReceiptPrice
  FROM Orders O 
  JOIN MenuItem MI 
    ON O.MenuItemID = MI.MenuItemID
 GROUP 
    BY O.Res_Datum
     , O.Res_ID
     , O.Tafel_Id  
";

问题是我必须手动输入所有内容,甚至包括reservation_id,然后我可以计算出该日期该表的总订单价格。

我想要当天绑定(bind)到预订表的预订中的reservation_id,这样我就知道谁下了什么订单。所以我不必手动输入它。

我已经从 JOINS、Viewuws 和多个 select 语句中查找了所有内容,但我无法弄清楚。也尝试过外键,但这使事情变得更加困惑。

我想要完成的任务: 1.创建和查看预订并分配一个表(这有效) 2.接受订单,并查看表的总订单价格 -> 带有预订ID(和日期)(这有效但只有当我手动将reservation_id输入到sql中时。)

以下是我已经创建的内容。你看我快完成了。只需要最后一个查询即可工作,并且很高兴知道我做错了什么。

我的数据库:

MenuItem: 
    MenuItemID  int(11)         
    ItemName    varchar(255)        
    ItemPrice   double

orders:
 OrderID    int(11)         
 MenuItemID int(11)         
 ReceiptID  int(11)         
 Res_Datum  date            
 Tafel_Id   int(11)         
 Res_ID     int(11) 


receipt:
ReceiptID       int(11)         
ReceiptPrice    double

reserveringen:  
    Reservering_Id  int(11)         
    Tafel_Id        int(11)         
    VoorNaam        varchar(255)            
    AchterNaam      varchar(255)            
    TelefoonNummer  varchar(255)        
    Email           varchar(255)        
    Res_Datum       date

下面我将添加两个 php 文件来创建订单 如果您复制粘贴两个表单中的代码并使用相同的名称,您应该能够重新创建。

Bestelling.php:

<form action="/restaurant/maak_bestelling.php" method="POST">
  <h2>Enter Order</h2>

  Table Number:<br>
  <input type="text" name="tafelnummer" value=""><br><br>
  Receipt Id:<br>
  <input type="text" name="receiptid"   value=""><br><br>
  Menu_Item:<br>
  <input type="text" name="menu_item"   value=""><br><br>
  Date: <br>
  <input type="date" name="date"        value=""><br><br>

  <input type="submit" value="Submit">
</form>


<h2>Pending Orders:</h2>
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "restaurant";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

//MY Query i am trying to run
// $sql = "SELECT O.Res_Datum, R.Reservering_Id, O.Tafel_Id,O.ReceiptID, SUM(MI.ItemPrice) AS TotalReceiptPrice
// FROM Orders, Reserveringen AS O INNER JOIN MenuItem AS MI ON O.MenuItemID = MI.MenuItemID
// AS O LEFT JOIN Reservering_Id AS R on O.Reservering_Id = R.reservering_Id
// GROUP BY O.Res_Datum, O.Res_ID, O.Tafel_Id  ";

//The statement I get with an Empty reservation_ID
$sql = "SELECT O.Res_Datum, O.Res_ID, O.Tafel_Id,O.ReceiptID, SUM(MI.ItemPrice) AS TotalReceiptPrice
FROM Orders AS O INNER JOIN MenuItem AS MI ON O.MenuItemID = MI.MenuItemID
GROUP BY O.Res_Datum, O.Res_ID, O.Tafel_Id  ";


$result = $conn->query($sql);

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo "Res_datum: ". $row["Res_Datum"]. " ReservationID : " . $row["Res_ID"]. " - Table_Number: " . $row["Tafel_Id"]. " Total Order Price: " . $row["TotalReceiptPrice"]." ". "<br>";
    }
} else {
    echo "0 results";
}

mysqli_close($conn);
?>


</div>

maak_bestelling.php:

<?php


$con = mysqli_connect('localhost','root','');

if(!$con) {
echo 'Not connected with server';
}

if(!mysqli_select_db ($con,'restaurant')) {
echo 'Database Not selected';
}

$tablenumber = $_POST['tafelnummer'];
$receiptid = $_POST['receiptid'];
$menu_item = $_POST['menu_item'];
$date = $_POST['date'];


$sql = "INSERT INTO Orders (orders.Tafel_Id, orders.ReceiptID, orders.MenuItemID,  orders.Res_Datum )
VALUES ('$tablenumber', '$receiptid', '$menu_item', '$date')";

if(!mysqli_query($con,$sql)){
  echo 'insert did not work';
}else {
  echo 'Order created successfully';
}

header("refresh:1; url=bestelling.php");





?>

我还有两个用于创建预订的文件, 表格看起来像这样,您可能想留下印象:

<form action="/restaurant/maak_reservering.php" method="POST">
  Voornaam:<br>
  <input type="text" name="voornaam" value=""><br><br>

  Achternaam:<br>
  <input type="text" name="achternaam" value=""><br><br>

  Email:<br>
  <input type="text" name="email" value=""><br><br>

  Telefoonnummer:<br>
  <input type="text" name="telefoonnummer" value=""><br><br>

  Tafel:<br>
  <input type="text" name="tafel" value=""><br><br>

  Reserverings Datum:<br>
  <input type="date" name="datum" value="dd//mm//yy"><br><br>

  <input type="submit" value="Submit">
</form>




<div id="Tafels">
<h3>Gereserveerde Tafels</h3>

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "restaurant";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// $sql = "SELECT reserveringen.Tafel_Id, reserveringen.Res_Datum
// FROM reserveringen
// INNER JOIN tafels ON reserveringen.Tafel_Id=tafels.Tafel_Id";
// $result = $conn->query($sql);

//andere query welke ik heb geprobeerd met reservering nummer
//tafels.tafel_Nummer,reserveringen.Res_Datum,reserveringen.Reservering_Id FROM tafels INNER JOIN reserveringen ON reserveringen.Res_Datum = reserveringen.Res_Datum AND reserveringen.Reservering_Id = reserveringen.Reservering_Id

//$sql = "SELECT tafels.tafel_Nummer,reserveringen.Res_Datum,reserveringen.Reservering_Id FROM tafels LEFT JOIN reserveringen ON reserveringen.Res_Datum = reserveringen.Res_Datum AND reserveringen.Reservering_Id = reserveringen.Reservering_Id";
$sql = "SELECT Reservering_Id, Tafel_Id, Res_Datum, VoorNaam, AchterNaam FROM reserveringen ORDER BY Res_Datum DESC";
$result = $conn->query($sql);

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo "reserveringID: ". $row["Reservering_Id"]. " tafelnummer: " . $row["Tafel_Id"]. " - Reservering_datum: " . $row["Res_Datum"]. " " . $row["VoorNaam"]." ".$row["AchterNaam"]. " ". "<br>";
    }
} else {
    echo "0 results";
}

mysqli_close($conn);

最佳答案

预订和分配的 table :

select 
reserveringen.Reservering_Id
, orders.Tafel_Id

from reserveringen

inner join orders on orders.Res_ID = reserveringen.Reservering_Id  
inner join MenuItem on MenuItem.MenuItemID = orders.MenuItemID
inner join receipt on receipt.ReceiptID = orders.ReceiptID

订单、表格、预订以及菜单项价格总和:

select 
orders.OrderID
, reserveringen.Reservering_Id
, orders.Tafel_Id
, sum(MenuItem.ItemPrice) as sum

from reserveringen

inner join orders on orders.Res_ID = reserveringen.Reservering_Id  
inner join MenuItem on MenuItem.MenuItemID = orders.MenuItemID
inner join receipt on receipt.ReceiptID = orders.ReceiptID


where orders.OrderID = ? --insert the OrderID

group by
orders.OrderID
, reserveringen.Reservering_Id
, orders.Tafel_Id

关于php - 下订单并接收附带的reservation_id SQL、PHP、html5 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54335418/

相关文章:

html - 如何在 wicket 中启用组件生成的 HTML/CSS

javascript - Sequelize "model.associate"属性不再起作用?

mysql - 按月汇总多条记录

php - 在执行任何更新查询后,如何才能将旧值恢复到表中?

php - 在php中获取脚本退出状态代码

php - 用php删除html元素

php - 将 reCAPTCHA v2 添加到我的 PHP 文件中

javascript - 动态表格如果复选框为空() td单元格与JS

带连接的 MySql 全文索引

php - 使用 SQL 语句生成的复选框获取和操作表中的值