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