php - 表单,根据单列参数输入多条记录

标签 php mysql

我创建了一个本地网站来盘点和编目我的漫画,我想知道如何才能加快添加某些记录。

例如,我可能想添加一系列的 10 个连续问题,而不必一遍又一遍地在表单中输入大部分冗余数据。我想知道当我添加一条记录时,我是否可以为多个问题添加一个复选框,并且可能输入一个带有起始问题参数或类似内容的数字?

我有一个表单和我的插入方法:

<form action="addBooks.php" method="post">
<div class="row">
        <div class="col-xs-3">
            <label>Title:</label>
            <input type="text" class="form-control" name="title" required>
        </div>
        <div class="col-xs-3">
            <label>Main Character:</label>
            <input type="text" class="form-control" name="mainCharacter" required>
        </div>
        <div class="col-xs-3">
            <label>Author:</label>
            <input type="text" class="form-control" name="author" required>
        </div>
        <div class="col-xs-3">
            <label>Illustrator:</label>
            <input type="text" class="form-control" name="illustrator" required>
        </div>
    </div>
    <br>
    <div class="row">
        <div class="col-xs-3">
            <label>Issue:</label>
            <input type="text" class="form-control" name="issue" required>
        </div>
        <div class="col-xs-3">
            <label>Cover:</label>
            <input type="text" class="form-control" name="cover" required>
        </div>
        <div class="col-xs-3">
            <label>Year Published:</label>
            <input type="text" class="form-control" name="yearPub" required>
        </div>
        <div class="col-xs-3">
            <label>Comments:</label>
            <textarea class="form-control" name="comments"></textarea>
        </div>
    </div>
<button type="submit" class="btn btn-default">Submit</button>

INSERT INTO comics.comic_inventory 
        (Title,Author,Illustrator,Main_character,issue,cover,publish_date,comments,date_added)
    VALUES ('$_POST[title]',
            '$_POST[author]',
            '$_POST[illustrator]',
            '$_POST[mainCharacter]',
            '$_POST[issue]',
            '$_POST[cover]',
            '$_POST[yearPub]',
            '$_POST[comments]',
            current_timestamp()
            )";

if ($conn->query($sql) === TRUE) {
header("Location: index.php");
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}

所以我想让它输入 10 条记录,这些记录的数据相同,除了问题编号之外。也许我可以输入起始问题,所以如果我将“1”作为起始问题,它将插入问题从 1 到 10 的 10 条记录。这有意义吗?

最佳答案

一种解决方案是允许在表单的 issue 输入中使用诸如 1-10 之类的字符串。然后你可以在你的 PHP 中做这样的事情:

if (strpos($_POST['issue'], '-') !== false) {
    $issues = range(...explode('-', $_POST['issue']));
}
else {
    $issues = array($_POST['issue']);
}
foreach ($issues as $issue) {
    $sql = "INSERT INTO comics.comic_inventory (Title,Author,Illustrator,Main_character,issue,cover,publish_date,comments,date_added)
        VALUES ('$_POST[title]',
                '$_POST[author]',
                '$_POST[illustrator]',
                '$_POST[mainCharacter]',
                '$issue',
                '$_POST[cover]',
                '$_POST[yearPub]',
                '$_POST[comments]',
                current_timestamp()
                )";    
    if ($conn->query($sql) === false) {
        echo "Error: " . $sql . "<br>" . $conn->error;
        exit;
    }
}
header("Location: index.php");

您可以看到问题号拆分代码正在 3v4l.org 上运行。

关于php - 表单,根据单列参数输入多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53367389/

相关文章:

php - 在我们自己的系统上获取并显示在不同操作系统上工作的访客 IP 地址

php - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法”

php - 如何使用 PDO 从 MySQL 获取数字类型?

PHP 和 MySQL - 无法使 INSERT INTO 正常工作

mysql - 如何删除 mysql 中表的列,其中该列的所有值为空。我有 38GB 的​​表,因此需要性能。

php - 我想得到在 php 表单中填写的两个时间戳之间的差异

php - 您如何对数千个条目使用自动完成功能?

php - 优化数据库查询 MySQL 和 PHP

mysql - 具有 3 个角色的数据库设计用户

PHP MySQL : How to get ambiguous column result from joined table