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

我在等待你宝贵的想法。

4

2 回答 2

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>
于 2013-07-01T14:30:58.823 回答
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 %sWHERE satis_satici REGEXP '{$str_search}'.

请注意,col LIKE 'search'通常等于col REGEXP 'search'并且col LIKE 'search' OR col LIKE 'search'通常等于col REGEXP 'search|search2',这是我的示例提供的。

除此之外,我建议您尽可能将变量、列名等改为英文。它变得更容易维护,您只需要翻译给最终用户。

于 2013-07-02T12:27:00.280 回答