PHP foreach不会选择下拉列表

时间:2015-02-17 17:01:11

标签: php

我有一个这个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只有一个字符串yesno 当它是yes时,我希望选择下拉菜单中的是部分,但是当它no时,我希望选择下拉列表中的no部分。我该怎么做?

2 个答案:

答案 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代码(并在编辑器中正确地显示颜色代码)。