我有一个类似于下面的sql存储过程:
create procedure procedurename
declare @startdate datetime, @enddate endtime, @field1 varchar(15) = null
select * from table1
where field1 = @field1 or @field1 is null
and date between @startdate and @enddate
当我想显示field1中的所有值时,我只是忽略在执行时提供参数@ field1
execute procedurename @startdate = '01/07/2012', @enddate = '31/07/2012'
现在我想在浏览器中访问存储过程并尝试下面的代码但如果选择“全选”选项,则显示空白结果。
<?php
$attr = 'selected="selected"'; ?>
<?php
$field1= isset($_REQUEST['field1']) ? $_REQUEST['field1'] : null; ?>
<select name="field1" style="margin-bottom:3px;">
<option> select all </option>
<option value="xyz" <?php echo $field1 == 'xyz' ? $attr : ''; ?>>xyz</option>
<option value="abc" <?php echo $field1 == 'abc' ? $attr : ''; ?>>abc</option>
<option value="def" <?php echo $field1 == 'def' ? $attr : ''; ?>>abc</option>
</select>
所以我基本上想要选择field1的所有值,如果我从下拉框中选择“全选”。
答案 0 :(得分:0)
好吧,我直接在sql中对此进行了整理。
我改变了我的where子句,类似于下面的内容:
case when @field1 is '5' then field1 else @field1 end
然后我在php的列表框中添加了值'5',如下所示
<select name="field1" style="margin-bottom:3px;">
<option value="5" <?php echo $field1 == '5' ? $attr : ''; ?>>Select All</option>
<option value="xyz" <?php echo $field1 == 'xyz' ? $attr : ''; ?>>xyz</option>
<option value="abc" <?php echo $field1 == 'abc' ? $attr : ''; ?>>abc</option>
<option value="def" <?php echo $field1 == 'def' ? $attr : ''; ?>>abc</option>
</select>