-2

In the code below is a partial list of items that could be updated. I select the ADI code from a MySQL database and format it as a drop-down list when updating.

Is there a way to shorten this?

PHP CODE

<?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 CODE

<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>
Progman
  • 16,827
  • 6
  • 33
  • 48
Mr_Thomas
  • 857
  • 3
  • 19
  • 39
  • you can use foreach loop loop through every elm in array and apply condition there – ahmednawazbutt Oct 09 '20 at 15:20
  • 2
    Look into [arrays](https://www.php.net/manual/en/language.types.array.php) and [`foreach`](https://www.php.net/manual/en/control-structures.foreach.php). – Jeto Oct 09 '20 at 15:23
  • 1
    @Jeto is absolutely right, your code is a prime example of why an array is the way to go, so you can have one loop with `$adi[$n]` and loop through each array value in turn. – Martin Oct 09 '20 at 17:23
  • Do not add filler text to circumvent a system put in place to prevent questions with too few information. – Progman Oct 09 '20 at 20:04

2 Answers2

3

From your version the ADI seem to be hardcoded in HTML. If that's the ideal situation then the PHP conditions can simply be moved to within the HTML tag such as this:

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

Alternatively you could have the ADI as an array and use a loop to display them. Something like this:

<?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>
Patrick
  • 1,788
  • 4
  • 20
1
<?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>
Henry
  • 597
  • 4
  • 12