Php 基于GET预先选择一个项目

Php 基于GET预先选择一个项目,php,html,Php,Html,I根据$\u GET中的值在列表框中预选一项 例如:选择带有选项1、2、3的框。从url我得到值2。如何预选此值?…的方法太复杂了。我只想声明预先选择了哪个选项,比如如果答案中的语句是最后一个,那么数量较少的解决方案。 不幸的是,没有办法这么做。您必须执行以下操作: <select name="select"> <option value="1"<?php if ( $_GET['select'] == '1' ): ?> selected="selected"

I根据
$\u GET
中的值在列表框中预选一项


例如:选择带有选项1、2、3的框。从url我得到值2。如何预选此值?
的方法太复杂了。我只想声明预先选择了哪个选项,比如
如果答案中的
语句是最后一个,那么
数量较少的解决方案。

不幸的是,没有办法这么做。您必须执行以下操作:

<select name="select">
  <option value="1"<?php if ( $_GET['select'] == '1' ): ?> selected="selected"<?php endif; ?>>Option 1</option>
  <option value="2"<?php if ( $_GET['select'] == '2' ): ?> selected="selected"<?php endif; ?>>Option 2</option>
  <option value="3"<?php if ( $_GET['select'] == '3' ): ?> selected="selected"<?php endif; ?>>Option 3</option>
</select>
作为替代方案,您可以使用PHP
数组
来创建选项,使用
foreach
循环来创建
选项

<select name="select">
<?php

$options = array(
  1 => 'Option 1',
  2 => 'Option 2',
  3 => 'Option 3'
);

foreach ( $options as $value => $name )
{
  echo '<option value="' . $value . '"' . ( $_GET['select'] == $value ? ' selected="selected"' : '' ) . '>' . $name . '</option>';
}

?>
</select>

如果我的答案中的
语句数量较少,则答案是最后一个。

不幸的是,没有办法这么做。您必须执行以下操作:

<select name="select">
  <option value="1"<?php if ( $_GET['select'] == '1' ): ?> selected="selected"<?php endif; ?>>Option 1</option>
  <option value="2"<?php if ( $_GET['select'] == '2' ): ?> selected="selected"<?php endif; ?>>Option 2</option>
  <option value="3"<?php if ( $_GET['select'] == '3' ): ?> selected="selected"<?php endif; ?>>Option 3</option>
</select>
作为替代方案,您可以使用PHP
数组
来创建选项,使用
foreach
循环来创建
选项

<select name="select">
<?php

$options = array(
  1 => 'Option 1',
  2 => 'Option 2',
  3 => 'Option 3'
);

foreach ( $options as $value => $name )
{
  echo '<option value="' . $value . '"' . ( $_GET['select'] == $value ? ' selected="selected"' : '' ) . '>' . $name . '</option>';
}

?>
</select>

无法让所选标记指示所选标记。它必须通过选项标签来完成

你有没有想过在选项之间循环

$desiredSelect = $_GET['desired'];

foreach( array('option-value'  => 'option-text',
               'option-value2' =>'option-text2' ) as $val => $test )
{
    echo "<option value=\"$val\" ";
    if( $val == $desiredSelect ) echo "selected = \"selected\"";
    echo ">$text</option>";
}
$desiredSelect=$\u GET['desired'];
foreach(数组('option-value'=>'选项文本'),
“option-value2'=>“option-text2”)作为$val=>$test)
{
回显“$text”;
}

无法让所选标记指示所选标记。它必须通过选项标签来完成

你有没有想过在选项之间循环

$desiredSelect = $_GET['desired'];

foreach( array('option-value'  => 'option-text',
               'option-value2' =>'option-text2' ) as $val => $test )
{
    echo "<option value=\"$val\" ";
    if( $val == $desiredSelect ) echo "selected = \"selected\"";
    echo ">$text</option>";
}
$desiredSelect=$\u GET['desired'];
foreach(数组('option-value'=>'选项文本'),
“option-value2'=>“option-text2”)作为$val=>$test)
{
回显“$text”;
}

如果请求是get:

如果请求为get,则将以下代码注入响应HTML:

$(function(){
    $('#selectBox').val(selectedItemValue);
});

就这么简单。:)

如果请求是get,则可以插入一个简单的JavaScript/jQuery脚本在DOM就绪时启动:

如果请求为get,则将以下代码注入响应HTML:

$(function(){
    $('#selectBox').val(selectedItemValue);
});

就这么简单。:)

实际上,有两种方法:第一种方法是将每个元素与所选元素进行比较(正如@Francois Deschenes和@cWallenpole所做的那样);第二个是变通方法,因此不是很好,但更容易实现。形成列表后,您可以使用javascript将所选项目设置为所需:


$(函数(){
$('select[selected]').val(函数(){
返回$(this.attr('selected'))
})
});
1.
10

实际上,您有两种方法:第一种方法是将每个元素与所选元素进行比较(正如@Francois Deschenes和@cWallenpole所做的那样);第二个是变通方法,因此不是很好,但更容易实现。形成列表后,您可以使用javascript将所选项目设置为所需:


$(函数(){
$('select[selected]').val(函数(){
返回$(this.attr('selected'))
})
});
1.
10

另一个非if非js版本可能是这样的

<?
$res = array($_GET["selected"] => " selected='selected'");    
?>


<select name="select">
  <option value="1"<? echo $res['1']; ?>>Option 1</option>
  <option value="2"<? echo $res['2']; ?>>Option 2</option>
  <option value="3"<? echo $res['3']; ?>>Option 3</option>
</select>

另一个非if非js版本可能是这样的

<?
$res = array($_GET["selected"] => " selected='selected'");    
?>


<select name="select">
  <option value="1"<? echo $res['1']; ?>>Option 1</option>
  <option value="2"<? echo $res['2']; ?>>Option 2</option>
  <option value="3"<? echo $res['3']; ?>>Option 3</option>
</select>


您能告诉我们列表框是如何输出的吗?它是由PHP输出的吗?你能告诉我们列表框是如何输出的吗?它是由PHP输出的吗?哦,@Saeed Neamati在我写作时发布了相同的smth:)哦,@Saeed Neamati在我写作时发布了相同的smth:)+!因为每个选项都没有if语句。+!如果你不关心没有Javascript的人,如果你正在使用jQuery。如果
selectedItemValue
被神奇地设置。selectedItemValue可以在服务器上创建(内联PHP),如果您想在服务器上设置选择框的选定值,那么客户端已经预先设置了它,所以您知道它。但你是对的。它需要对JavaScript/jQuery有一点熟悉:)我的观点是,它并没有那么简单,因为您遗漏了实现这一功能所需的代码,对于不熟悉JavaScript的人来说,这些代码可能并不明显。不过,解决方案肯定会奏效:)如果您不关心没有Javascript的人,并且使用jQuery的话。如果
selectedItemValue
被神奇地设置。selectedItemValue可以在服务器上创建(内联PHP),如果您想在服务器上设置选择框的选定值,那么客户端已经预先设置了它,所以您知道它。但你是对的。它需要对JavaScript/jQuery有一点熟悉:)我的观点是,它并没有那么简单,因为您遗漏了实现这一功能所需的代码,对于不熟悉JavaScript的人来说,这些代码可能并不明显。不过解决方案肯定会奏效:)@Michael Mior-我的最后一个选项没有那么多
if
语句。但是,既然如此,如果计划使用常规HTML,那么您还建议如何使用它以使其与禁用JavaScript的客户机协同工作?我完全支持jQuery,但有些人仍然禁用JavaScript,我认为全HTML选项更适合如此简单的东西。我并不认为JavaScript是个好主意。我想不是。我也不知怎的错过了你在答案中的最后一个选项。看起来更漂亮:)@Michael Mior-不用担心。我同意最后一个选择看起来更漂亮。这是我会选择的。我只是想给OP尽可能多的不需要JavaScript的选项。JS非常好,但是它经常被过度依赖。PS-我不能删除我添加的否决票,除非你编辑你的答案。很抱歉…@yes123-从技术上讲,三元不是
if
。它是一个条件语句,解析为两个表达式中的一个,不同于分支流的
if
语句