我有一个这样的html:
<option value="yes">Yes</option>
<option value="no">No</option>
和我的php:
<?php
exec('uci get sms_gateway.setting.filter',$filt);
echo '<form action='.$_SERVER['PHP_SELF'].' method="post">
<select name="filter">';
foreach ($filt as $value){
if ($filt = "yes"){
echo '<option value="'.$value.'" selected>Yes</option><br>
<option value="no">No</option><br>ini yes';}
else {
echo '<option value="yes">Yes</option><br>
<option value="'.$value.'" selected>No</option><br> ini no';
}
}
echo '
</select>
<input type="submit" name="submit" value="Submit">';
if(isset($_POST['submit'])){
{
$data = $_POST['filter'];
echo "<br>halo ". $data;
}
}
?>
$filt
只有一个字符串,它是yes
或no
当是yes
时,我希望在下拉菜单上选择"是"部分,但当是no
时,我想要在下拉菜单中选择no
部分。我该怎么做?
这段代码:
foreach ($filt as $value)
您正在执行as $value
,因此请使用:
foreach ($filt as $value){
if ($value == "yes"){
然后你有两套不需要的背带;它们只是免费的额外按键:
if(isset($_POST['submit'])){
{
$data = $_POST['filter'];
echo "<br>halo ". $data;
}
}
更改为:
if(isset($_POST['submit'])){
$data = $_POST['filter'];
echo "<br>halo ". $data;
}
我发现的另一件事,一个丢失的关闭</form>
标签。
为了记录在案,您还使用了一个=
符号进行分配,而不是使用两个==
进行比较:
if ($filt = "yes")
理论上应该读作
if ($filt == "yes")
将错误报告添加到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告只能在临时阶段进行,而不能在生产阶段进行。
您的代码有很多错误,您将"$filt"视为数组和值,您还分配(=)而不是比较。我会给你一个工作的例子,而不是试图修复你的代码:
<?php $possibleValues = array('yes', 'no'); // All possible options ?>
<?php $valueYouWantSelected = 'yes'; // 'yes' will be selected ?>
<select>
<?php foreach ($possibleValues as $value): ?>
<?php $selected = ($valueYouWantSelected == $value) ? 'selected' : null; // Select this option if it equals $valueYouWantSelected ?>
<option value="<?php echo $value;?>" <?php echo $selected; ?>>
<?php echo $value; ?>
</option>
<?php endforeach ?>
</select>
如果您对如何分配$selected感到困惑,请查看三元运算符。
此外,我使用了替代语法,它可以更容易地在HTML中组织PHP代码(并在编辑器中正确地为代码着色)。