2014-04-10 77 views
0

我有多個複選框,在我的網站: 複選框1 複選框2 複選框3等動態創建MySQL的SELECT查詢

我想基於上述複選框動態生成MySQL查詢。

I:E如果選擇第一複選框那麼查詢應該是:

$mysql="Select * from mytable where colname=" . $checkbox1 .; 

如果選擇第一和第二複選框那麼查詢應該是:

$mysql="Select * from mytable where colname=" . $checkbox1 ."AND colname=" . $checkbox2 ." ; 

如果所有被選中,那麼它應該是:

$mysql="Select * from mytable where colname=" . $checkbox1 . "AND colname=" . $checkbox2 ."AND colname=" . $checkbox3 . ; 

可有人請幫助:

+2

你幾乎已經明白了。現在你只需要寫它! – r3wt

+0

多少個複選框? – Strawberry

回答

1

你必須改變一樣跟隨你的形式,因爲它的服用多種價值的應該是後作爲數組

<form action="register.php" method="POST"> 
    <input type="checkbox" name="rating[]" value="5">5 Star 
    <input type="checkbox" name="rating[]" value="4">4 Star 
    <input type="checkbox" name="rating[]" value="3">3 Star 
    <input type="checkbox" name="rating[]" value="2">2 Star 
    <input type="checkbox" name="rating[]" value="1">Less than 2 Star 
</form> 

然後在PHP

$where = ''; 
    if(isset($_POST['rating'])){ 
    $data = implode(',',$_POST['rating']); // beacuse your rating is only one column in db i think 
    $where = "WHERE cloumn_name IN($data)"; 
    } 
    $query = "SELECT * FROM your_table $where"; 
+0

謝謝,但我的問題是針對多個複選框被選中的情況。 – user3478137

+0

你可以給你的HTML複選框? – Fisherman

+0

這裏是:

5 Star 4 Star 3 Star 2 Star 小於2星
user3478137

0

一些事情

<? if ($_POST[option]==1) { 
     //query 
    } 
?> 

<form method="post"> 
    <input type="checkbox" name="option" value="1">1 
    <input type="checkbox" name="option" value="2">2 
    <input type="checkbox" name="option" value="3">3 
</form> 
+0

但是當多個複選框被選中時。例如有10個複選框:1,2,3 .... 10。 – user3478137

+0

你可以在jsbin或jsfiddle中創建代碼嗎? –

0

只是檢查,如果你的複選框被通過(isset($ _ POST [checkbox1]))

所以你可以做這樣的事情

if (isset($_POST[checkbox1]) 
{ 
//statement 
} 
else if (isset($_POST[checkbox2]) 
{ 
//statement2... 
} 
... 

Read more here

selcted

Cheers

1

您可以使用字符串連接有位弄虛作假獲得工作完成。不要依賴isset,而應該使用!empty。

<form action="example.php" method="post"> 
    <input type="checkbox" name="Col1" value="colname" />Col 1</br> 
    <input type="checkbox" name="Col2" value="colname" />Col 2</br> 
    <input type="checkbox" name="Col3" value="colname" />Col 3</br> 
</form> 
<?php 
if(!empty($_POST)) { 
    $string = ''; 
    if(!empty($_POST['col1'])) { 

     $string.= "column1 ='".$_POST['col1']."'"; 
    } 
    if(!empty($_POST['col2'])){ 

     if(!empty($string)) { 

      $string.=" AND "; 

     } 
     $string.= "column2 ='".$_POST['col2']."'"; 

    } 
    if(!empty($_POST['col3'])){ 
     if(!empty($string)) { 

      $string.=" AND "; 

     } 

     $string .= "column3 ='".$_POST['col3']."'"; 
    } 

    if(!empty($string)) 
    { 
     //execute your query here. 
    } 
} 
0

從下面提供的代碼中應該可以看出,我當然沒有PHP編碼器。但無論如何,這裏有個想法...

嘗試使用0到127之間的input的不同值,例如, ?input=66

<?php 

if(isset($_GET['input'])){ 

    $input = $_GET['input']; 

    }else{ 

    $input=0; 
} 

$days = array('mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'); 

for($i=0; $i<7; $i++) { 
    $daybit = pow(2,$i); 
    if($input & $daybit) { 
     echo "<input type = checkbox checked/>$days[$i]"; 
    }else{ 
     echo "<input type = checkbox>$days[$i]"; 
} 
} 
?>