我目前正在用 PHP 编写一个脚本。这就是我想要做的 - 我有几个不同的地点,不同的时间和日期,比如回复。
每个“位置”的位置(或此处所谓的槽位)只有这么多,#1 最多有 20 个槽位。我在此处包含的脚本的第一部分获取表中该位置的所有预订的总和。另一部分是,当表单发布时,它会比较当前已保留的空位数量、最大空位以及他们试图保留的空位数量。
页面上有一个下拉菜单,他们可以在其中选择要保留的空位数量。假设已经预留了 15 个槽位,他们会尝试预留 6 个槽位,但由于最大值为 20 个,因此它不应该通过并发送到另一个页面。这一切都工作正常,但由于其余部分是动态的,我不想继续添加,并且每次添加新位置时都保持干净,如果您明白我的意思的话?我正在考虑某种类型的 foreach 但我不确定如何让它为此工作。有一个名为“位置”的表,其中包含最大插槽和所有信息。每个都有一个 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;
}
}
}
最佳答案
<?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;
}
}
?>
关于php - 如何使这个 php 脚本动态化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23715220/