【发布时间】:2020-07-08 21:34:20
【问题描述】:
我需要一种更有效的方式来将我的多选复选框表单提交到我的数据库。只关注花瓶孔值复选框,我目前在我的数据库表中有 3 个单独的行/列,称为“vase_holes_left”“vase_holes_centre”“vase_holes_right”。这些值可以以某种方式转到 1 行吗?非常感谢。 抱歉,如果需要更多信息,我不会在这里发布太多信息,请告诉我。
<?php include('includes/header.php'); ?>
<?php
//Include functions
include('includes/functions.php');
?>
<?php
/************** Register new client ******************/
//require database class files
require('includes/pdocon.php');
//instatiating our database objects
$db = new Pdocon;
//Collect and clean values from the form
if (isset($_POST['submit_client'])) {
$raw_deceased = cleandata($_POST['deceased']);
$raw_cemetery = cleandata($_POST['cemetery']);
$raw_plot = cleandata($_POST['plot']);
$raw_jobtype = cleandata($_POST['jobtype']);
$raw_stone_headstone_description = cleandata($_POST['stone_headstone_description']);
$raw_headstone_colour = cleandata($_POST['headstone_colour']);
$raw_headstone_size = cleandata($_POST['headstone_size']);
$raw_step_base_size = cleandata($_POST['step_base_size']);
$raw_step_base_dowells = cleandata($_POST['step_base_dowells']);
$raw_base_colour = cleandata($_POST['base_colour']);
$raw_base_size = cleandata($_POST['base_size']);
$raw_base_dowells = cleandata($_POST['base_dowells']);
$raw_vase_colour = cleandata($_POST['vase_colour']);
$raw_vase_style = cleandata($_POST['vase_style']);
$raw_vase_number = cleandata($_POST['vase_number']);
$raw_vase_holes_left = cleandata($_POST['vase_holes_left']);
$raw_vase_holes_centre = cleandata($_POST['vase_holes_centre']);
$raw_vase_holes_right = cleandata($_POST['vase_holes_right']);
$c_deceased = sanitize($raw_deceased);
$c_cemetery = sanitize($raw_cemetery);
$c_plot = sanitize($raw_plot);
$c_jobtype = sanitize($raw_jobtype);
$c_stone_headstone_description = sanitize($raw_stone_headstone_description);
$c_headstone_colour = sanitize($raw_headstone_colour);
$c_headstone_size = sanitize($raw_headstone_size);
$c_step_base_size = sanitize($raw_step_base_size);
$c_step_base_dowells = sanitize($raw_step_base_dowells);
$c_base_colour = sanitize($raw_base_colour);
$c_base_size = sanitize($raw_base_size);
$c_base_dowells = sanitize($raw_base_dowells);
$c_vase_colour = sanitize($raw_vase_colour);
$c_vase_style = sanitize($raw_vase_style);
$c_vase_number = sanitize($raw_vase_number);
$c_vase_holes_left = sanitize($raw_vase_holes_left);
$c_vase_holes_centre = sanitize($raw_vase_holes_centre);
$c_vase_holes_right = sanitize($raw_vase_holes_right);
$db->query('SELECT * FROM clients WHERE deceased=:deceased');
$db->bindValue(':deceased', $c_deceased, PDO::PARAM_STR);
$row = $db->fetchSingle();
if ($row) {
redirect('clients.php');
keepmsg('<div class="alert alert-danger" role="alert">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
<strong>Sorry!</strong> Client Already Exist. Please Register Again
</div>');
} else {
$db->query("INSERT INTO clients (id, jobtype, deceased, plot, cemetery, stone_headstone_description, headstone_colour, headstone_size, step_base_size, step_base_dowells, base_colour, base_size, base_dowells, vase_colour, vase_style, vase_number, vase_holes_left, vase_holes_centre, vase_holes_right ) VALUES (NULL, :jobtype, :deceased, :plot, :cemetery, :stone_headstone_description, :headstone_colour, :headstone_size, :step_base_size, :step_base_dowells, :base_colour, :base_size, :base_dowells, :vase_colour, :vase_style, :vase_number, :vase_holes_left, :vase_holes_centre, :vase_holes_right ) ");
$db->bindValue(':jobtype', $c_jobtype, PDO::PARAM_STR);
$db->bindValue(':deceased', $c_deceased, PDO::PARAM_STR);
$db->bindValue(':plot', $c_plot, PDO::PARAM_STR);
$db->bindValue(':cemetery', $c_cemetery, PDO::PARAM_STR);
$db->bindValue(':stone_headstone_description', $c_stone_headstone_description, PDO::PARAM_STR);
$db->bindValue(':headstone_colour', $c_headstone_colour, PDO::PARAM_STR);
$db->bindValue(':headstone_size', $c_headstone_size, PDO::PARAM_STR);
$db->bindValue(':step_base_size', $c_step_base_size, PDO::PARAM_STR);
$db->bindValue(':step_base_dowells', $c_step_base_dowells, PDO::PARAM_STR);
$db->bindValue(':base_colour', $c_base_colour, PDO::PARAM_STR);
$db->bindValue(':base_size', $c_base_size, PDO::PARAM_STR);
$db->bindValue(':base_dowells', $c_base_dowells, PDO::PARAM_STR);
$db->bindValue(':vase_colour', $c_vase_colour, PDO::PARAM_STR);
$db->bindValue(':vase_style', $c_vase_style, PDO::PARAM_STR);
$db->bindValue(':vase_number', $c_vase_number, PDO::PARAM_STR);
$db->bindValue(':vase_holes_left', $c_vase_holes_left, PDO::PARAM_STR);
$db->bindValue(':vase_holes_centre', $c_vase_holes_centre, PDO::PARAM_STR);
$db->bindValue(':vase_holes_right', $c_vase_holes_right, PDO::PARAM_STR);
$run_client = $db->execute();
if ($run_client) {
redirect('clients.php');
keepmsg('<div class="alert alert-success text-center">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
<strong>Success!</strong> Client registered successfully.
</div>');
} else {
keepmsg('<div class="alert alert-danger text-center">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
<strong>Sorry!</strong> Client could not be registered.
</div>');
}
}
}
?>
<div class="form-row">
<div class="col-md-6 offset-md-3">
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="vase_holes_left" id="vase_holes_left" value="vase_holes_left">
<label class="form-check-label" for="vase_holes_left">Left</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="vase_holes_centre" id="vase_holes_centre" value="vase_holes_centre">
<label class="form-check-label" for="vase_holes_centre">Centre</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" name="vase_holes_right" id="vase_holes_right" value="vase_holes_right">
<label class="form-check-label" for="vase_holes_right">Right</label>
</div>
</div>
</div>
【问题讨论】:
-
如果用户 b 插入 而 用户 a 正在选择怎么办?
-
我正在考虑在至少一个复选框选择中添加“必需”,不知何故,也许使用 php else 语句?
-
表单按原样工作,所以另一种选择是当数据回显到客户端数据显示页面时,我可以将所有 3 个花瓶选择回显到一个 html 表格单元格中?
标签: php html mysql post bootstrap-4