我目前有一个用PHP编写的脚本。这就是我想要做的事情 - 我有几个不同的时间和日期,如RSVP。
每个"位置"只有这么多的点(或这里称为插槽)。 #1最多有20个插槽。我在此处包含的脚本的第一部分获取该表中该位置的所有预留的总和。另一部分是在发布表单时,它会比较当前已保留的插槽数,最大插槽数以及他们尝试保留的数量。
页面上有一个下拉列表,可以选择要保留的插槽数。所以说已经预留了15个插槽,他们尝试保留6个,但是当最大值为20时,它不应该通过并被发送到另一个页面。这一切都很好,但由于其余部分都是动态的,我不想继续添加,并且如果你明白我的意思,每次添加新位置时都要保持清洁。我在考虑某种类型的foreach,但我不确定我是如何让它为此工作的。有一个名为locations的表,它有最大的插槽和所有信息。每个人都有一个id,它与保留预约的表有关。我需要在接下来的几个小时内完成这项工作,如果有人可以提供帮助,或者有任何想法我会非常感激!感谢
$result1 = $db->query("SELECT SUM(SLOTS) AS value_sum FROM `1`");
$row1 = $result1->fetch(PDO::FETCH_ASSOC);
$slots1 = $row1['value_sum'];
if(!isset($row1['value_sum'])) {
$slots1 = '0';
}
$result2 = $db->query("SELECT SUM(SLOTS) AS value_sum FROM `2`");
$row2 = $result2->fetch(PDO::FETCH_ASSOC);
$slots2 = $row2['value_sum'];
if(!isset($row2['value_sum'])) {
$slots2 = '0';
}
$result3 = $db->query("SELECT SUM(SLOTS) AS value_sum FROM `3`");
$row3 = $result3->fetch(PDO::FETCH_ASSOC);
$slots3 = $row3['value_sum'];
if(!isset($row3['value_sum'])) {
$slots3 = '0';
}
$result4 = $db->query("SELECT SUM(SLOTS) AS value_sum FROM `4`");
$row4 = $result4->fetch(PDO::FETCH_ASSOC);
$slots4 = $row4['value_sum'];
if(!isset($row4['value_sum'])) {
$slots4 = '0';
}
if (isset($_POST['submit'])) {
$id=$_POST['id'];
$passed = false;
if ($id == '1'){
$query = "SELECT maxslots FROM locations WHERE id = 1";
$stmt = $db->prepare($query);
$stmt->execute();
$slotamount = $stmt->fetchColumn();
$slots_all = $slots1 + $_POST['slots'];
if ($slots_all > $slotamount) {
header("Location:index.php?toomany=1");
} else {
$passed = true;
}
}
if ($id == '2'){
$query = "SELECT maxslots FROM locations WHERE id = 2";
$stmt = $db->prepare($query);
$stmt->execute();
$slotamount = $stmt->fetchColumn();
$slots_all = $slots2 + $_POST['slots'];
if ($slots_all > $slotamount) {
header("Location:index.php?toomany=2");
} else {
$passed = true;
}
}
if ($id == '3'){
$query = "SELECT maxslots FROM locations WHERE id = 3";
$stmt = $db->prepare($query);
$stmt->execute();
$slotamount = $stmt->fetchColumn();
$slots_all = $slots3 + $_POST['slots'];
if ($slots_all > $slotamount) {
header("Location:index.php?toomany=3");
} else {
$passed = true;
}
}
if ($id == '4'){
$query = "SELECT maxslots FROM locations WHERE id = 4";
$stmt = $db->prepare($query);
$stmt->execute();
$slotamount = $stmt->fetchColumn();
$slots_all = $slots4 + $_POST['slots'];
if ($slots_all > $slotamount) {
header("Location:index.php?toomany=4");
} else {
$passed = true;
}
}
}
答案 0 :(得分:1)
<?php
function getSlotSum($id) {
$result = $db->query("SELECT SUM(SLOTS) AS value_sum FROM $id");
$row = $result->fetch(PDO::FETCH_ASSOC);
$slots = $row['value_sum'];
if(!isset($row['value_sum'])) {
$slots = '0';
}
return $slots;
}
if (isset($_POST['submit'])) {
$id=$_POST['id'];
$passed = false;
$query = "SELECT maxslots FROM locations WHERE id = $id";
$stmt = $db->prepare($query);
$stmt->execute();
$slotamount = $stmt->fetchColumn();
$slots_all = getSlotSum($id) + $_POST['slots'];
if ($slots_all > $slotamount) {
header("Location:index.php?toomany=$id");
} else {
$passed = true;
}
}
?>