2011-01-14 85 views
0

我有一个表的银行的数据库,该表中有3个字段是id,bank_name,branch_bank。我想根据使用复选框bank_name搜索数据库。用复选框搜索多个数据

有3条记录bank_name,3个复选框是:Bank1, Bank2, Bank3
如果我点击出现bank3的复选框,我只想要只有bank3数据的记录。

如何制作它?

回答

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); 
} 

如果您需要一些额外的解释,只需询问。

+0

如果脚本是使用javascript制作的,那么该怎么办?因为如果您使用PHP,则必须使用submit按钮。而在JavaScript中不需要点击提交按钮,当我们点击复选框时,数据将自动出现 – user569261 2011-01-14 07:32:57