【问题标题】:PHP Is there a way to shorten this list of options when updating a record? [duplicate]PHP 有没有办法在更新记录时缩短这个选项列表? [复制]
【发布时间】:2020-10-09 14:57:39
【问题描述】:

下面的代码是可以更新的部分项目列表。我从 MySQL 数据库中选择 ADI 代码,并在更新时将其格式化为下拉列表。

有办法缩短吗?

PHP 代码

<?php
        if ($adi == "003") {$adi003 = 'selected="selected"'; } else
        if ($adi == "009") {$adi009 = 'selected="selected"'; } else
        if ($adi == "011") {$adi011 = 'selected="selected"'; } else
        if ($adi == "013") {$adi013 = 'selected="selected"'; } else
        if ($adi == "015") {$adi015 = 'selected="selected"'; } else
        if ($adi == "019") {$adi019 = 'selected="selected"'; } else
        if ($adi == "021") {$adi021 = 'selected="selected"'; } else
        if ($adi == "025") {$adi025 = 'selected="selected"'; } else
        if ($adi == "029") {$adi029 = 'selected="selected"'; } else
        if ($adi == "035") {$adi035 = 'selected="selected"'; } else
        if ($adi == "043") {$adi043 = 'selected="selected"'; } else
        if ($adi == "047") {$adi047 = 'selected="selected"'; } else
        if ($adi == "051") {$adi051 = 'selected="selected"'; } else
        if ($adi == "057") {$adi057 = 'selected="selected"'; } else
        if ($adi == "059") {$adi059 = 'selected="selected"'; } else
        if ($adi == "065") {$adi065 = 'selected="selected"'; } else
        if ($adi == "067") {$adi067 = 'selected="selected"'; } else
        if ($adi == "075") {$adi075 = 'selected="selected"'; } else
        if ($adi == "083") {$adi083 = 'selected="selected"'; } else
        if ($adi == "093") {$adi093 = 'selected="selected"'; } else
        if ($adi == "095") {$adi095 = 'selected="selected"'; } else
        if ($adi == "105") {$adi105 = 'selected="selected"'; } else
        if ($adi == "107") {$adi107 = 'selected="selected"'; } else
        if ($adi == "109") {$adi109 = 'selected="selected"'; } else
        if ($adi == "111") {$adi111 = 'selected="selected"'; } else
        if ($adi == "121") {$adi121 = 'selected="selected"'; } else
        if ($adi == "127") {$adi127 = 'selected="selected"'; } else
        if ($adi == "129") {$adi129 = 'selected="selected"'; } else
        if ($adi == "131") {$adi131 = 'selected="selected"'; } else
        if ($adi == "135") {$adi135 = 'selected="selected"'; } else
        if ($adi == "143") {$adi143 = 'selected="selected"'; } else
        if ($adi == "149") {$adi149 = 'selected="selected"'; } else
        if ($adi == "157") {$adi157 = 'selected="selected"'; } else
        if ($adi == "179") {$adi179 = 'selected="selected"'; } else
        if ($adi == "181") {$adi181 = 'selected="selected"'; } else
        if ($adi == "197") {$adi197 = 'selected="selected"'; } else
        if ($adi == "201") {$adi201 = 'selected="selected"'; } else
        if ($adi == "209") {$adi209 = 'selected="selected"'; } else
        if ($adi == "213") {$adi213 = 'selected="selected"'; } else
        if ($adi == "221") {$adi221 = 'selected="selected"'; } else
        if ($adi == "233") {$adi233 = 'selected="selected"'; } else
        if ($adi == "241") {$adi241 = 'selected="selected"'; } else
        if ($adi == "245") {$adi245 = 'selected="selected"'; } else
        if ($adi == "263") {$adi263 = 'selected="selected"'; } else
        if ($adi == "271") {$adi271 = 'selected="selected"'; } else
        if ($adi == "275") {$adi275 = 'selected="selected"'; } else
        if ($adi == "279") {$adi279 = 'selected="selected"'; } else
        if ($adi == "281") {$adi281 = 'selected="selected"'; } else
        if ($adi == "283") {$adi283 = 'selected="selected"'; } else
        if ($adi == "291") {$adi291 = 'selected="selected"'; } else
        if ($adi == "329") {$adi329 = 'selected="selected"'; } else
        if ($adi == "351") {$adi351 = 'selected="selected"'; } else
        if ($adi == "367") {$adi367 = 'selected="selected"'; }
?>

HTML 代码

<tr>
        <td colspan="2" class="adiFormat">ADI</td>

        <td class="adiFormat">
        <select name="adi" id="adi">
                <option value="003" <?php echo $adi003 ?>>Boston (Derry, Manchester & Worcester)</option>
                <option value="009" <?php echo $adi009 ?>>New York (Kingston & Poughkeepsie)</option>
                <option value="011" <?php echo $adi011 ?>>Philadelphia (Alntn,Atlc Cty,Bthlm,Rdng,Vinldn,Wldwd)</option>
                <option value="013" <?php echo $adi013 ?>>Los Angeles (Barston, Corona & San Bernardino-Ontario)</option>
                <option value="015" <?php echo $adi015 ?>>San Diego</option>
                <option value="019" <?php echo $adi019 ?>>Washington, DC</option>
                <option value="021" <?php echo $adi021 ?>>Baltimore</option>
                <option value="025" <?php echo $adi025 ?>>Hartford-New Haven (New London)</option>
                <option value="029" <?php echo $adi029 ?>>Pittsburgh</option>
                <option value="035" <?php echo $adi035 ?>>Cleveland (Akron, Canton, Mansfield & Sandusky)</option>
                <option value="043" <?php echo $adi043 ?>>Harrisburg-York-Lancaster-Lebanon</option>
                <option value="047" <?php echo $adi047 ?>>Providence-New Bedford</option>
                <option value="051" <?php echo $adi051 ?>>Chicago (La Salle)</option>
                <option value="057" <?php echo $adi057 ?>>Detroit</option>
                <option value="059" <?php echo $adi059 ?>>Grand Rapids-Kalamazoo-Battle Creek (Muskegon)</option>
                <option value="065" <?php echo $adi065 ?>>San Francisco-Oakland-San Jose (Santa Rosa & Vallejo)</option>
                <option value="067" <?php echo $adi067 ?>>Sacramento-Stockton</option>
                <option value="075" <?php echo $adi075 ?>>St. Louis (Mt. Vernon)</option>
                <option value="083" <?php echo $adi083 ?>>Indianapolis (Marion,IN)</option>
                <option value="093" <?php echo $adi093 ?>>Cincinnati</option>
                <option value="095" <?php echo $adi095 ?>>Dayton (Richmond,IN)</option>
                <option value="105" <?php echo $adi105 ?>>Seattle-Tacoma (Bellingham & Wenatchee)</option>
                <option value="107" <?php echo $adi107 ?>>Minneapolis-St. Paul (St. Cloud)</option>
                <option value="109" <?php echo $adi109 ?>>Dallas-Ft. Worth</option>
                <option value="111" <?php echo $adi111 ?>>Milwaukee (Kenosha & Racine)</option>
                <option value="121" <?php echo $adi121 ?>>Columbus, OH (Chillicothe)</option>
                <option value="127" <?php echo $adi127 ?>>Miami-Ft. Lauderdale (Ft. Lauderdale-Hollywood)</option>
                <option value="129" <?php echo $adi129 ?>>West Palm Beach-Ft Pierce-Vero Beach</option>
                <option value="131" <?php echo $adi131 ?>>Tampa-St. Petersburg (Lakeland)</option>
                <option value="135" <?php echo $adi135 ?>>Buffalo (Jamestown)</option>
                <option value="143" <?php echo $adi143 ?>>Wilkes Barre-Scranton</option>
                <option value="149" <?php echo $adi149 ?>>Albany-Schenectady-Troy</option>
                <option value="157" <?php echo $adi157 ?>>Kansas City (Lawrence)</option>
                <option value="179" <?php echo $adi179 ?>>Memphis (Holly Springs)</option>
                <option value="181" <?php echo $adi181 ?>>Nashville</option>
                <option value="197" <?php echo $adi197 ?>>Atlanta (Athens & Rome)</option>
                <option value="201" <?php echo $adi201 ?>>Houston</option>
                <option value="209" <?php echo $adi209 ?>>Louisville</option>
                <option value="213" <?php echo $adi213 ?>>Greenville-Spartanburg-Asheville (Toccoa)</option>
                <option value="221" <?php echo $adi221 ?>>Birmingham (Gadsen)</option>
                <option value="233" <?php echo $adi233 ?>>Portland, OR</option>
                <option value="241" <?php echo $adi241 ?>>Denver</option>
                <option value="245" <?php echo $adi245 ?>>New Orleans</option>
                <option value="263" <?php echo $adi263 ?>>Oklahoma City</option>
                <option value="271" <?php echo $adi271 ?>>San Antonio-Victoria Leagle Pass & Kerrville</option>
                <option value="275" <?php echo $adi275 ?>>Phoenix (Kingman & Prescott)</option>
                <option value="279" <?php echo $adi279 ?>>Charlotte (Hickory)</option>
                <option value="281" <?php echo $adi281 ?>>Greensboro-Winston Salem-High Point (Burlington,NC)</option>
                <option value="283" <?php echo $adi283 ?>>Norfolk-Portsmth-Newport News-Hamptn</option>
                <option value="291" <?php echo $adi291 ?>>Salt Lake City (Cedar City)</option>
                <option value="329" <?php echo $adi329 ?>>Orlando-Daytona Beach-Melbourne (Leesburg)</option>
                <option value="351" <?php echo $adi351 ?>>Raleigh-Durham (Fayetteville,Goldsboro & Rocky Mount)</option>
                <option value="367" <?php echo $adi367 ?>>Albuquerque (Hobbs)</option>
        </select>
</td>
</tr>

【问题讨论】:

  • 您可以使用 foreach 循环遍历数组中的每个榆树并在那里应用条件
  • 查看arraysforeach
  • @Jeto 是绝对正确的,您的代码是一个很好的例子,说明为什么要使用数组,因此您可以使用$adi[$n] 进行一个循环,然后依次循环遍历每个数组值。
  • 不要添加填充文本来规避一个系统,以防止信息太少的问题。

标签: php


【解决方案1】:

从您的版本来看,ADI 似乎是用 HTML 硬编码的。如果这是理想情况,那么 PHP 条件可以简单地移动到 HTML 标记中,如下所示:

<tr>
        <td colspan="2" class="adiFormat">ADI</td>

        <td class="adiFormat">
        <select name="adi" id="adi">
                <option value="003"<?php if($adi == "003") echo ' selected="selected"'; ?>>Boston (Derry, Manchester & Worcester)</option>
                <option value="009"<?php if($adi == "009") echo ' selected="selected"'; ?>>New York (Kingston & Poughkeepsie)</option>
                <option value="011"<?php if($adi == "011") echo ' selected="selected"'; ?>>Philadelphia (Alntn,Atlc Cty,Bthlm,Rdng,Vinldn,Wldwd)</option>
                <!-- ... the rest of the options -->
        </select>
        </td>
</tr>

或者,您可以将 ADI 作为数组并使用循环来显示它们。像这样的:

<?php
    $adis = [
      '003' => 'Boston (Derry, Manchester & Worcester)',
      '009' => 'New York (Kingston & Poughkeepsie)',
      '011' => 'Philadelphia (Alntn,Atlc Cty,Bthlm,Rdng,Vinldn,Wldwd)',
      // ... the rest of the options
    ];

    $adi = '009';
?>

    <table>
      <tr>
        <td colspan="2" class="adiFormat">ADI</td>
        <td class="adiFormat">
          <select name="adi" id="adi">
            <?php foreach($adis as $adiKey => $adiName): ?>
              <option value="<?= $adiKey ?>"<?php if($adi === $adiKey) echo ' selected' ?>><?= $adiName ?></option>
            <?php endforeach; ?>
          </select>
      </tr>
    </table>

【讨论】:

    【解决方案2】:
    <?php
    /**
     * Coding-Style is PSR-1 and PSR-12 compliant.
     * In this example, we dont make useage of any return value of the print function.
     * Therfore, the echo-construct is prefered. 
     */
    $locations = [
        '003' => 'Boston (Derry, Manchester & Worcester)',
        '009' => 'New York (Kingston & Poughkeepsie)',
        '011' => 'Philadelphia (Alntn,Atlc Cty,Bthlm,Rdng,Vinldn,Wldwd)',
        '013' => 'Los Angeles (Barston, Corona & San Bernardino-Ontario)',
        // add more entrys here
    ];
    
    $currentActiveAdi = (isset($_REQUEST['adi']) ? $_REQUEST['adi'] : null);
    ?>
    
    <html>
        <body>
            <select name="adi" id="adi">
            <?php foreach ($locations as $adi => $location):?>
                 <option value="<?=$adi;?>" <?=($currentActiveAdi === $adi ? 'selected="selected"' : '');?>>
                    <?=$location;?>
                 </option>
            <?php endforeach;?>
            </select>
        </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 2019-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 2020-11-17
      • 2022-01-05
      • 2013-04-24
      • 1970-01-01
      相关资源
      最近更新 更多