gpt4 book ai didi

PHP - 从 html 复选框中选择 sql

转载 作者:搜寻专家 更新时间:2023-10-31 21:51:50 25 4
gpt4 key购买 nike

我有一个带有一些复选框的 html 表单。 My form with 4 checkbox

我想写一个 sql 来包含我的复选框。

例如在我的数据库中:
专栏:Stato
选项:0,1,2,3
其中:

  • 0 = 开场白,
  • 1 = Stampato,
  • 2 = Bloccato,
  • 3 = ❤(最爱),

所以,如果他们都被选中了,你必须把所有的都给我看,否则不要。

如何编写sql?

这是我的复选框:

<div id="radioset">
<input type="checkbox" id="radio1" name="aperto" checked="checked"><label for="radio1">Aperto</label>
<input type="checkbox" id="radio2" name="stampato" checked="checked"><label for="radio2">Stampato</label>
<input type="checkbox" id="radio3" name="bloccato" checked="checked"><label for="radio3">Bloccato</label>
<input type="checkbox" id="radio4" name="favorite" checked="checked"><label for="radio4">&#9829</label>
</div>

这是我的 PHP sql:

$input=$_POST['input'];
$id=$_POST['id'];
$tipo=$_POST['tipo'];
$numero1=$_POST['numero1'];
$numero2=$_POST['numero2'];
$data1=date('d/m/Y', strtotime($_POST['from']));;
$data2=date('d/m/Y', strtotime($_POST['to']));;

$sql="SELECT [Id Ord] AS [ID], [Tipo Ord] AS [Tipo], [N Ord] AS [Numero], [Data Ord] AS [Data], [Ragione Sociale], [Indirizzo], [TotImp] AS [IMPORTO TOTALE], [TotIva] AS [IMPORTO IVA] FROM [Ordini] WHERE [Id Ord] LIKE '$id' OR [Tipo Ord] LIKE '$tipo' OR [Data Ord] BETWEEN #$data1# AND #$data2#";

$rs = $con->execute($sql);

谢谢!

最佳答案

首先,将您的复选框定义为一个数组(不要使用术语“radio”——单选按钮完全不同!),并更改值以使其与数据库记录相匹配:

<div id="checkboxes">
<input type="checkbox" id="checkbox1" name="options[]" value="0" checked="checked"><label for="checkbox1">Aperto</label>
<input type="checkbox" id="checkbox2" name="options[]" value="1" checked="checked"><label for="checkbox2">Stampato</label>
<input type="checkbox" id="checkbox3" name="options[]" value="2" checked="checked"><label for="checkbox3">Bloccato</label>
<input type="checkbox" id="checkbox4" name="options[]" value="3" checked="checked"><label for="checkbox4">&#9829</label>
</div>

然后您可以使用 for each 循环遍历它们,如果存在该选项(如果未选中该框,则回传中甚至不存在复选框值)然后添加一些 SQL 以包含该选项搜索中的选项:

$optionsSQL = "";

foreach($_POST["options"] as $index => $option) {
if ($optionsSQL == "") $optionsSQL = "AND Stato IN ("; //if it's the first detected option, add the IN clause to the string
$optionsSQL .= $option.",";
}

//trim the trailing comma and add the closing bracket of the IN clause instead
if ($optionsSQL != "")
{
$optionsSQL = rtrim($optionsSQL, ",");
$optionsSQL .= ")";
}

最后,将 $optionsSQL 字符串附加到您的查询中:

$sql="SELECT [Id Ord] AS [ID], [Tipo Ord] AS [Tipo], [N Ord] AS [Numero], [Data Ord] AS [Data], [Ragione Sociale], [Indirizzo], [TotImp] AS [IMPORTO TOTALE], [TotIva] AS [IMPORTO IVA] FROM [Ordini] WHERE ([Id Ord] LIKE '$id' OR [Tipo Ord] LIKE '$tipo' OR ([Data Ord] BETWEEN #$data1# AND #$data2#))".$optionsSQL;

注意由于这是一个简单的示例,因此我没有在此处采取措施来防止 SQL 注入(inject)。您应该研究如何防范这种情况——恶意用户可能会篡改选项值并尝试提交有问题的数据。在 SQL 语句中使用每个选项值之前,您应该验证它。

关于PHP - 从 html 复选框中选择 sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40485014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com