【问题标题】:Option select for loop PHP + Mysql选项选择循环 PHP + Mysql
【发布时间】:2012-08-17 11:15:42
【问题描述】:

代替这一行 50 次

<option value="<?php echo $settings_profile_not_set;?>" <?php if($display_profile['1'] == $settings_profile_one) { echo "selected"; }?>>
    <?php echo $settings_profile_one;?>
</option>

对于每个选项,我想以循环方式执行此操作。 这是我的例子:

<select name="profile_height">
<?php 
if ($display_profile['height'] == $settings_profile_not_set) 
{
?>
    <option value="<?php echo $settings_profile_not_set;?>" <?php if($display_profile['height'] == $settings_profile_not_set) { echo "selected"; }?>><?php echo $settings_profile_not_set;?></option>
<?php        
    //Function which displays all the centimeters that are available    
    for( $i=144; $i<=210; $i++ )
    {
        echo '<option value="';
        echo $i;
        echo '">';
        echo $i;
        echo "</option>";    

    }    
} else {
?>    
    <option value="<?php echo $settings_profile_not_set;?>"><?php echo $settings_profile_not_set;?></option>
<?php    
    for( $i=144; $i<=210; $i++ )
    {
        echo '<option value="';
        echo $i;
        echo '" ';
        if($display_profile['height'] == $i) {
            echo '"selected"';
        }
        echo ' >';
        echo $i;
        echo "</option>";    
    }
}
?>
</select>

现在它会打印出所有数字,但从数据库读取时不会打印出选定的数字。我知道我在某处做错了什么,但可以提出建议,并给出工作示例。

提前感谢

【问题讨论】:

  • 你不需要那么多不同的echo。改用串联,每次只占用一行:echo "&lt;option value='$i'&gt;$i&lt;/option&gt;";
  • 你没有给属性selected赋值(虽然它有时有效),你应该给属性值'selected'描述@ 987654321@

标签: php mysql for-loop option


【解决方案1】:

这是一段旧代码,可能会让您更轻松

echo Series_drop_down_box_options(144, 210, $display_profile['height']);

function Series_drop_down_box_options($start,$end,$default="",$step=1,$packed=0,$packed_char="0") 
{
        $output = '';
        if( (is_integer($start)) && (is_integer($end)) )
        {
                if($start<$end)
                {
                        for($i=$start;$i<=$end;$i+=$step)
                        { 
                                if($packed>0)
                                {
                                        $value=str_pad($i, $packed, $packed_char, STR_PAD_LEFT);
                                }
                                else
                                {
                                        $value=$i;
                                }
                                $output.= '<option value="';
                                $output.= $value;
                                if ($default==$value)
                                {
                                        $output.= '" selected>';
                                }
                                else
                                {
                                        $output.= '">';
                                }
                                $output.= $value;
                                $output.= '</option>';
                                $output.= "\n";
                        }
                }
                else
                {
                        for($i=$start;$i<=$end;$i-=$step)
                        { 
                                if($packed>0)
                                {
                                        $value=str_pad($i, $packed, $packed_char, STR_PAD_LEFT);
                                }
                                else
                                {
                                        $value=$i;
                                }
                                $output.= '<option value="';
                                $output.= $value;
                                if ($default==$value)
                                {
                                        $output.= '" selected>';
                                }
                                else
                                {
                                        $output.= '">';
                                }
                                $output.= $value;
                                $output.= '</option>';
                                $output.= "\n";
                        }
                }
        }
        if( (is_string($start)) && (is_string($end)) )
        {
                $chr_start=ord($start);
                $chr_end=ord($end);
                if($chr_start<$chr_end)
                {
                        for($i=$chr_start;$i<=$chr_end;$i+=$step)
                        { 
                                $letter=chr($i);
                                $output.= '<option value="';
                                $output.= $letter;
                                if ($default==$letter)
                                {
                                        $output.= '" selected>';
                                }
                                else
                                {
                                        $output.= '">';
                                }
                                $output.= $letter;
                                $output.= '</option>';
                                $output.= "\n";
                        }
                }
                else
                {
                        for($i=$chr_start;$i<=$chr_end;$i-=$step)
                        { 
                                $letter=chr($i);
                                $output.= '<option value="';
                                $output.= $letter;
                                if ($default==$letter)
                                {
                                        $output.= '" selected>';
                                }
                                else
                                {
                                        $output.= '">';
                                }
                                $output.= $letter;
                                $output.= '</option>';
                                $output.= "\n";
                        }
                }
        }
        if( (is_array($start)) && (is_array($end)) )
        {
                $limit=min(sizeof($start),sizeof($start));
                for($i=0;$i<$limit;$i++)
                { 
                        $output.= '<option value="';
                        $output.= $start[$i];
                        if ($default==$start[$i])
                        {
                                $output.= '" selected>';
                        }
                        else
                        {
                                $output.= '">';
                        }
                        $output.= $end[$i];
                        $output.= '</option>';
                        $output.= "\n";
                }

        }

        return $output;
}

【讨论】:

  • 它太旧了,所以'selected'应该真的是'selected="selected"'
  • 为什么这么多代码?执行 OP 要求的循环不应超过 10 行!
  • 这在一半的情况下工作。它显示我在我的数据库中的值(数字)。但如果我在数据库中有文本“未设置”,它在下拉列表中不可见列表。
  • 正如我所说的它的旧,但是一个起点,并提供了一个可重用函数的例子。
【解决方案2】:

这是工作代码 :) Thanx Waygood

<?php echo  Series_drop_down_box_options(144, 210, $display_profile['height']); ?>

然后下面的函数=)

<?php function series_drop_down_box_options($start,$end,$default="",$step=1,$packed=0,$packed_char="0") {
    $output = '';
    echo '<option value="Not set">Not set</option>';
    if( (is_integer($start)) && (is_integer($end)) )
    {
            if($start<$end)
            {
                    for($i=$start;$i<=$end;$i+=$step)
                    { 
                            if($packed>0)
                            {
                                    $value=str_pad($i, $packed, $packed_char, STR_PAD_LEFT);
                            }
                            else
                            {
                                    $value=$i;
                            }
                            $output.= '<option value="';
                            $output.= $value;
                            if ($default==$value)
                            {
                                    $output.= '" selected>';
                            }
                            else
                            {
                                    $output.= '">';
                            }
                            $output.= $value;
                            $output.= '</option>';
                            $output.= "\n";
                    }
            }
            else
            {
                    for($i=$start;$i<=$end;$i-=$step)
                    { 
                            if($packed>0)
                            {
                                    $value=str_pad($i, $packed, $packed_char, STR_PAD_LEFT);
                            }
                            else
                            {
                                    $value=$i;
                            }
                            $output.= '<option value="';
                            $output.= $value;
                            if ($default==$value)
                            {
                                    $output.= '" selected>';
                            }
                            else
                            {
                                    $output.= '">';
                            }
                            $output.= $value;
                            $output.= '</option>';
                            $output.= "\n";
                    }
            }
    }
    if( (is_string($start)) && (is_string($end)) )
    {
            $chr_start=ord($start);
            $chr_end=ord($end);
            if($chr_start<$chr_end)
            {
                    for($i=$chr_start;$i<=$chr_end;$i+=$step)
                    { 
                            $letter=chr($i);
                            $output.= '<option value="';
                            $output.= $letter;
                            if ($default==$letter)
                            {
                                    $output.= '" selected>';
                            }
                            else
                            {
                                    $output.= '">';
                            }
                            $output.= $letter;
                            $output.= '</option>';
                            $output.= "\n";
                    }
            }
            else
            {
                    for($i=$chr_start;$i<=$chr_end;$i-=$step)
                    { 
                            $letter=chr($i);
                            $output.= '<option value="';
                            $output.= $letter;
                            if ($default==$letter)
                            {
                                    $output.= '" selected>';
                            }
                            else
                            {
                                    $output.= '">';
                            }
                            $output.= $letter;
                            $output.= '</option>';
                            $output.= "\n";
                    }
            }
    }
    if( (is_array($start)) && (is_array($end)) )
    {
            $limit=min(sizeof($start),sizeof($start));
            for($i=0;$i<$limit;$i++)
            { 
                    $output.= '<option value="';
                    $output.= $start[$i];
                    if ($default==$start[$i])
                    {
                            $output.= '" selected>';
                    }
                    else
                    {
                            $output.= '">';
                    }
                    $output.= $end[$i];
                    $output.= '</option>';
                    $output.= "\n";
            }

    }

    return $output;
}?>

祝大家好运! =)

【讨论】:

    【解决方案3】:

    我修复了你的原始代码:太多echo,我添加了属性selected

    <select name="profile_height">
    <?php 
    if ($display_profile['height'] == $settings_profile_not_set) 
    {
    ?>
        <option value="<?php echo $settings_profile_not_set;?>" <?php if($display_profile['height'] == $settings_profile_not_set) { echo "selected"; }?>><?php echo $settings_profile_not_set;?></option>
    <?php        
        //Function which displays all the centimeters that are available    
        for( $i=144; $i<=210; $i++ )
        {
            echo "<option value='$i'>$i</option>";
        }    
    } else {
    ?>    
        <option value="<?php echo $settings_profile_not_set;?>"><?php echo $settings_profile_not_set;?></option>
    <?php    
        for( $i=144; $i<=210; $i++ )
        {
            echo "<option value='$i'";
            if($display_profile['height'] == $i) {
                echo ' selected="selected"';
            }
            echo ">$i</option>";
        }
    }
    ?>
    </select>
    

    【讨论】:

      猜你喜欢
      • 2012-06-19
      • 1970-01-01
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 2018-10-04
      • 2016-08-11
      • 2014-11-18
      相关资源
      最近更新 更多