我为此经历过一些类似的问题,然而,凭借我的基本知识,我无法找到一个可以直接与我想要实现的目标相联系的答案。
例如,我找到了关于存储多个复选框值的数组的答案。但是,我不确定这是否是我需要的,因为我拥有的3个复选框中的每一个都是数据库中的各个列。
这是我目前用于复选框等的HTML:
<form action="addNewClient.php" method="POST">
<div class="modal-body">
<p>Please enter the name of the client you wish to create.</p>
<textarea id="addSQLNoteName" placeholder="Enter client name..." name="title" maxlength="25"></textarea>
<p>Teams Packge:</p>
<select name="package">
<option value="SBE">SBE</option>
<option value="Enterprise">Enterprise</option>
</select>
<br />
<input type="checkbox" name="portal" value="1"> Premium Portal
<br />
<input type="checkbox" name="replicated" value="1"> Replicated
<br />
<input type="checkbox" name="client" value="1"> IT Client
<br />
<textarea id="addSQLNoteName" placeholder="Important client info..." name="info" maxlength="25"></textarea>
</div>
<div class="modal-footer footer-sqlnotes">
<button type="submit" class="btn btn-success">Add Client</button>
</div>
</form>
这是我目前的PHP代码,我发表了一些评论,只是显示了哪些是复选框:
<?php include 'connectionDetails.php'; ?>
<?php
session_start();
if (isset($_POST['title'], $_POST['package'], $_POST['portal'], $_POST['replicated'], $_POST['client'], $_POST['info']))
{
$title = $_POST['title'];
$package = $_POST['package'];
$portal = $_POST['portal']; //Checkbox
$replicated = $_POST['replicated']; //Checkbox
$client = $_POST['client']; //Checkbox
$info = $_POST['info'];
$stmt = "INSERT INTO Clients (Client, TeamsPackage, Rating, Pos, Neg, PremiumPortal, Replicated, ITClient, ClientInfo) VALUES (?, ?, 0, 0, 0, ?, ?, ?, ?)";
$params = array($title, $package, $portal, $replicated, $client, $info);
$stmt = sqlsrv_query($conn, $stmt, $params);
if ($stmt === false)
{
die( print_r(sqlsrv_errors(), true));
}
header('location: clients.php');
}
else
{
echo "No Data";
}
?>
所以在我的数据库中,我有三位字段列,如果在提交时检查它将作为1输入,否则它将作为0输入。
就像我说的,如果另一个问题确实回答我的话,我道歉,我似乎无法将其实施到我想要实现的目标。
目前,如果检查了所有3个框,那么它将添加客户端,否则它将失败isset(),这正是我现在想要解决的问题。
答案 0 :(得分:3)
摆脱这整个陈述:
if (isset($_POST['title'], $_POST['package'], $_POST['portal'], $_POST['replicated'], $_POST['client'], $_POST['info']))
命名您的提交按钮:
<button type="submit" class="btn btn-success" name="submit">Add Client</button>
然后将条件更改为:
旁注:请参阅下面的修改。
if (isset($_POST['submit'])){
$portal = (isset($_POST['portal'])) ? '0' : $_POST['portal'];
$replicated = (isset($_POST['replicated'])) ? '0' : $_POST['replicated'];
$client = (isset($_POST['client'])) ? '0' : $_POST['client'];
// add your other form elements
// Perform your query here
}
三元运营商是恕我直言,应该在这里使用。
使用默认值0
。
您可以为原始帖子添加其他表单元素的其他条件。
修改强>
我对三元组isset()
犯了一个错误。那些应该读作!isset()
,如果他们是&#34;不是&#34;集。
所以,我把它改写成如下:
if (isset($_POST['submit'])){
$portal = !isset($_POST['portal']) ? '0' : $_POST['portal'];
$replicated = !isset($_POST['replicated']) ? '0' : $_POST['replicated'];
$client = !isset($_POST['client']) ? '0' : $_POST['client'];
// add your other form elements
// Perform your query here
}
答案 1 :(得分:1)
归功于@FunkFortyNiner,他在讨论中给我留下了这个解决方案。
if(isset($_POST['portal'])){
$portal = $_POST['portal'];
}else{
$portal = 0;
}
由于某些原因,他原来的答案并没有输入正确的值,但是他建议这样做了。
不是使用三元运算符,而是在每个复选框上执行isset语句,如果没有选中则将其设置为0。