【问题标题】:PHP foreach doesn't select the dropdown listPHP foreach 不选择下拉列表
【发布时间】:2015-02-17 17:01:10
【问题描述】:

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

【问题讨论】:

  • 首先,你是在做作业if ($filt = "yes"){,而不是比较if ($filt == "yes"){
  • 我试过了,但它弄乱了我的代码,下拉列表中no 的输出变为yes 而它应该保持no
  • 您需要传递您的 POST 并为其设置变量,然后进行比较。
  • 你能写代码吗?对不起,我还在学习......
  • foreach ($filt as $value) 你在做as $value 所以试试foreach ($filt as $value){ if ($value == "yes"){

标签: php


【解决方案1】:

这段代码:

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;
    }

我发现的另一件事是缺少关闭 &lt;/form&gt; 标记。


为了记录,您还使用单个 = 符号进行分配,而不是使用两个 == 进行比较:

if ($filt = "yes")

理论上应该是这样的

if ($filt == "yes")

error reporting 添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应该只在暂存阶段完成,而不是在生产阶段。

【讨论】:

    【解决方案2】:

    您的代码有很多问题,您将“$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 感到困惑,请查看 ternary operators

    另外,我正在使用alternative syntax,它可以更轻松地在 HTML 中组织 PHP 代码(并在编辑器中正确地为代码着色)。

    【讨论】:

      猜你喜欢
      • 2015-12-14
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多