php - 如何使这个 php 脚本动态化?

标签 php mysql sql pdo

我目前正在用 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/

相关文章:

python - 使用 django 在 mysql 数据库上使用 DISTINCT

sql - 如何更新满足给定条件的许多行中除一行之外的所有行?

sql - 将数字转换为 SQL 中的单词

php - 如何在一个程序中读取和写入php套接字?

php - MySQL 中的外来字符处理

mysql - 调用目录中的文件列表并在一行中传递它们

mysql - MACOS/MySQL/SQL Developer 连接错误 - 时区问题

使用 ORDER BY 和多个连接优化 MySQL 查询

php - Joomla 数据库导入不起作用

php - jQuery $.post 不返回 JSON 数据