2013-07-01 24 views
1

編輯:我編輯我的問題,使其更清晰我希望。多選不起作用

我構建了一個帶有多個搜索框的表單的頁面,通過$ _GET的方法從表中的數據庫表中搜索和顯示值。它現在工作很好。

我需要什麼:我想讓一些搜索框允許多選,但我只得到一個選擇的結果。

這是查詢:

$query_Recordset2 = sprintf("SELECT * FROM satislar WHERE satis_satici LIKE %s AND urun_satilanurun LIKE 
%s AND urun_pstnadslhizturu LIKE %s AND akt_aktalan LIKE %s AND satis_modem LIKE %s AND akt_aktdurum LIKE 
%s AND akt_ttonayi LIKE %s AND satis_tarih between %s and %s ORDER BY satis_tarih DESC", 

這是選擇選項:

<select name="satici[]" size="4" multiple="multiple" id="satici" size="4" class="span2 nostyle chzn-select" style="margin-top:9px;width:150px;"> 
               <option value="%">TÜM SATICILAR</option> 

               <?php 
do { 
?> 
               <option value="<?php echo $row_saticilistesi['satis_satici']?>"><?php echo $row_saticilistesi['satis_satici']?></option> 
               <?php 
} while ($row_saticilistesi = mysql_fetch_assoc($saticilistesi)); 
$rows = mysql_num_rows($saticilistesi); 
if($rows > 0) { 
    mysql_data_seek($saticilistesi, 0); 
    $row_saticilistesi = mysql_fetch_assoc($saticilistesi); 
} 
?> 

我等待着您的寶貴意見。

+0

你可能會發布這個HTML嗎? – Bananam00n

+3

你有沒有聽說過'$ _GET'或'$ _POST'? – bitWorking

+0

https://dl.dropboxusercontent.com/u/5326510/code.html – user2490870

回答

0

使用多種選擇你需要設置你的HTML這樣的(這就像你說你做了它的聲音:

<select name="foo[]" multiple="multiple"> 
    <!-- options go here --> 
</select> 

,然後在你的PHP可以訪問他們像這樣的數組:

<?php 
    // This will print out all of the selected values. 
    print_r($_GET['foo']); 

要在表格中回聲這些結果:

<table> 
    <tr><th>Option</th></tr> 
    <?php foreach ($_GET['foo'] as $option) : ?> 
     <tr><td><?php echo htmlspecialchars($option) ?></td></tr> 
    <?php endforeach; ?> 
</table> 
+0

我將您的代碼添加到了我的頁面頂部。該表是空的,但在頂部它說:「陣列([0] => HASAN MIZRAK [1] => SERDAR KAPLAN)」 – user2490870

+0

是的,這意味着HASAN MIZRAK和SERDAR KAPLAN是兩個選擇的選項,如果你想在表中回顯結果看看我更新的帖子。 – chrislondon

+0

是的,所選的選項列在表中,但這不是我所需要的。我需要在查詢中使用它們,並將結果與​​這兩位銷售員進行過濾。 – user2490870

0

name="satici[]" multiple="multiple"是COR rect HTML。

你想要什麼在PHP做將是:

$arr_search = array(); 
foreach((array)@$_POST['satici'] as $h) 
    $arr_search[] = $h; // Escape this value (without "'") 

$str_search = implode('|', $arr_search); 

和查詢內部,WHERE satis_satici REGEXP '{$str_search}'取代例如WHERE satis_satici LIKE %s

請注意,col LIKE 'search'通常等於col REGEXP 'search'col LIKE 'search' OR col LIKE 'search'通常等於col REGEXP 'search|search2',這是我的示例提供的。

除此之外,我建議你儘可能地獲取變量,列名等。維護起來變得容易很多,而且您只需要翻譯成最終用戶。

+0

羅賓,感謝您的快速回復和建議。我會記住這一點。我試過你的代碼,但它給了我這個錯誤:「得到錯誤」空(子)表達式「從正則表達式」。我把這個代碼放在sql查詢之前,並用你的代碼改變了查詢。 – user2490870

+0

'print_r($ _ POST ['satici'])'給你什麼? –

+0

你的代碼之前還是之後?我昨天試着用chrislondon的解決方案。這不是我需要的確切的東西,但它給了我在查詢後選擇的兩個名字。但現在它再次給出同樣的錯誤「得到錯誤」從正則表達式「空(子)表達式」。 – user2490870