我有一个这个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
部分。我该怎么做?
答案 0 :(得分:1)
这段代码:
foreach ($filt as $value)
你正在做as $value
所以请使用:
foreach ($filt as $value){
if ($value == "yes"){
然后你有2套不需要的牙箍;他们只是额外的击键:
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")
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。
答案 1 :(得分:0)
您的代码有很多问题,您将“$ 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>
如果您对我如何分配$ select感到困惑,请查看ternary operators。
此外,我正在使用alternative syntax,它可以更轻松地在HTML中组织PHP代码(并在编辑器中正确地显示颜色代码)。