我需要一种更有效的方式将我的多选复选框表单提交到我的数据库



我需要一种更有效的方式将多选复选框表单提交到数据库。仅关注"花瓶孔值"复选框,我目前在数据库表中有3个独立的行/列,名为"Vase_Holes_let"Vase_Holes_center"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">&times;</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">&times;</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">&times;</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>

我希望我能正确理解你。

将所有3个具有相同name="vase_holes"的字段分组,只需放置一个字段,即可强制用户使用HTML选择其中一个字段。

在数据库中创建一个新列vase_holes,并存储这3个值:vase_holes_let、vase_holes_centre和vase_hole_right。

现在你有一列有3种类型的数据,你可以根据这些数据过滤你未来的采石场。

这都是假设可以有一个值。若您想在同一行中有更多的值,可以使用PHP内爆选项将它们连接起来,并将其存储到一行中。你可以用/来设计它,所以以后如果你需要把它分开,你可以在/上爆炸。

这将最大限度地减少您在一列中的输入,每次提交一行。

<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" id="vase_holes_left" value="vase_holes_left" required
>
<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" 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" id="vase_holes_right" value="vase_holes_right">
<label class="form-check-label" for="vase_holes_right">Right</label>
</div>
</div>
</div>

最新更新