多项选择不起作用

时间:2013-07-01 11:22:35

标签: php multiple-select

编辑:我编辑了我的问题,希望它更清晰。

我构建了一个带有多个搜索框的表单的页面,以通过$ _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);
}
?>

我在等待你宝贵的想法。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

name="satici[]" multiple="multiple"是正确的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 LIKE %s替换为WHERE satis_satici REGEXP '{$str_search}'

请注意,col LIKE 'search'通常等于col REGEXP 'search'col LIKE 'search' OR col LIKE 'search'通常等于col REGEXP 'search|search2',我的示例提供了这些内容。

除此之外,我建议你尽可能多地获取变量,列名等。它变得更容易维护,您只需要翻译给最终用户。