编辑:我编辑了我的问题,希望它更清晰。
我构建了一个带有多个搜索框的表单的页面,以通过$ _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 :(得分: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'
,我的示例提供了这些内容。
除此之外,我建议你尽可能多地获取变量,列名等。它变得更容易维护,您只需要翻译给最终用户。