0

嗨,我已经设置了一个基于PHP的表单提交方法,用于在选择下拉菜单中每个页面排序行,它正常工作,我可以根据选择的值对行进行排序,但是我的问题是选择一个以进行排序的值不会在表单选定字段中显示为当前选择的内容。

我的意思是,当在下拉菜单中选择一个值以对行进行排序时,它应该在选择框中显示为当前作为默认值,如果没有选择任何内容,则默认行值应该显示为当前

please see here here at the sorting method, it shows current(10) as default rows and when a value is selected it becomes as current on page reloads after querying database.

这是我的表单字段的html代码:

<form action="is-test.php" method="get">
<select name="rpp" onchange="this.form.submit()">
<option selected value="">show</option><!-- i want default & current selected value here -->
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
</select>
</form>   

这种排序的php代码是:

$rowsperpage = '';
if (isset($_GET['rpp'])&& is_numeric($_GET['rpp'])) {
$rowsperpage = (int) mysql_real_escape_string($_GET['rpp']);
}else{
$rowsperpage='5';
} 

对此的mysql查询是:

$sql2 = "SELECT * FROM $tablename ORDER BY $orderby $sortby LIMIT $rowsperpage OFFSET $offset";

请向我推荐一种将所选值设置为当前值的方法。谢谢

4

2 回答 2

0
<option selected value="<?php echo $rowsperpage; ?>"><?php echo $rowsperpage; ?></option>

一个可能更好的方法是使用循环:

for ($i = 10, $i <= 30; $i +=10) {
    $selected = ($i == $rowsperpage) ? ' selected="selected"' : '';
    echo sprintf('<option value="%d"%s>%d</option>', $i, $selected, $i);
}
于 2012-06-01T02:30:33.813 回答
0

在您的<option>标签中,您应该执行如下检查:

<option value="10" <?php if ($rowsperpage == 10) echo 'selected="selected"' ?>>10</option>
<option value="20" <?php if ($rowsperpage == 20) echo 'selected="selected"' ?>>20</option>
<option value="30" <?php if ($rowsperpage == 30) echo 'selected="selected"' ?>>30</option>

因此,如果您选择20,它将显示为当前值<select>

<option value="10">10</option>
<option value="20" selected="selected">20</option>
<option value="30">30</option>

为了使事情更简单,只需for像这样使用循环:

for ($i = 10; $i <= 30; $i+= 10) {
  echo "<option value=\"$i\" ".($rowsperpage == $i ? 'selected="selected"' : '').">$i</option>";
}
于 2012-06-01T02:34:16.333 回答