我有一个表有一个表的数据库,该表中有3个字段是id,bank_name,branch_bank。我想使用复选框bank_name搜索数据库。
有3个记录,bank_name有3个复选框:Bank1, Bank2, Bank3
如果我单击出现bank3的复选框,我只想要只有bank3数据的记录。
如何制作?
答案 0 :(得分:1)
首先,你需要一些表格,最好由php本身构建,因为你使用存储在dbrms中的值。
<form method="post">
<label for="banking_bank1">Bank1:</label>
<input id="banking_bank1" type="checkbox" name="banking[]" value="bank1" /><br />
<label for="banking_bank2">Bank2:</label>
<input id="banking_bank2" type="checkbox" name="banking[]" value="bank2" /><br />
<label for="banking_bank3">Bank3:</label>
<input id="banking_bank3" type="checkbox" name="banking[]" value="bank3" /><br />
<button type="submit" name="search" value="search">Search</button>
</form>
这将为php构建一个数组,其中包括所有选择的银行名称 你没有指定你正在使用哪个dbrms,我选择了mysql,结构对于其他人来说都是一样的。
if ( isset($_POST) && isset($_POST['search']) )
{
$banksWhereClause = '';
if ( ! empty($_POST['banking']) ) // if the banking var is set, we'll add the values to the query
{
$banksToSearch = is_array($_POST['banking']) ? $_POST['banking'] : array($_POST['banking']);
foreach ( $banksToSearch as &$bank )
{
// prevent sql injection
$bank = mysql_real_escape_string($bank);
}
// add all values to an 'IN' clause
$banksWhereClause = "bank_name IN ('" . implode("', '", $banksToSearch) . "')";
}
if ( empty($banksWhereClause) )
{
$banksWhereClause = '1';
}
$found = array();
// build the final query
$sql = 'SELECT * FROM bank WHERE ' . $banksWhereClause;
$result = mysql_query($sql);
while ( $row = mysql_fetch_assoc($result) )
{
$found[] = $row;
}
var_dump($found);
}
如果您需要一些额外的解释,请询问。