Form içinde 'seçilen' değeri ile Sayı

1 Cevap php

Şu anda hataları varsa doğrulama sonra, veri düzeltmek için tüketici için ekranda kalır hangi yerleşik bir form var. 'Doğum Yılı' demek için bu nasıl bir örnek:

<select name="DOB3">
    <option value="">Year</option>
    <?php
        for ($i=date('Y'); $i>=1900; $i--)
  {
    echo "<option value='$i'";
    if ($fields["DOB3"] == $i)
      echo " selected";
    echo ">$i</option>";
  }
  ?>
</select>

Bir hata bulunursa, doğum değerin yıl yıl önceden girilen döndürür. Ben 'Devlet' alanının dışında tüm alanında bu işi olması mümkün duyuyorum. Ben aşağıdaki kod ile aşağı damla için dizi ve işlev oluşturmak:

<?php

$states_arr = array('AL'=>"Alabama",'AK'=>"Alaska",'AZ'=>"Arizona",'AR'=>"Arkansas",'CA'=>"California",'CO'=>"Colorado",'CT'=>"Connecticut",'DE'=>"Delaware",'DC'=>"District Of Columbia",'FL'=>"Florida",'GA'=>"Georgia",'HI'=>"Hawaii",'ID'=>"Idaho",'IL'=>"Illinois", 'IN'=>"Indiana", 'IA'=>"Iowa",  'KS'=>"Kansas",'KY'=>"Kentucky",'LA'=>"Louisiana",'ME'=>"Maine",'MD'=>"Maryland", 'MA'=>"Massachusetts",'MI'=>"Michigan",'MN'=>"Minnesota",'MS'=>"Mississippi",'MO'=>"Missouri",'MT'=>"Montana",'NE'=>"Nebraska",'NV'=>"Nevada",'NH'=>"New Hampshire",'NJ'=>"New Jersey",'NM'=>"New Mexico",'NY'=>"New York",'NC'=>"North Carolina",'ND'=>"North Dakota",'OH'=>"Ohio",'OK'=>"Oklahoma", 'OR'=>"Oregon",'PA'=>"Pennsylvania",'RI'=>"Rhode Island",'SC'=>"South Carolina",'SD'=>"South Dakota",'TN'=>"Tennessee",'TX'=>"Texas",'UT'=>"Utah",'VT'=>"Vermont",'VA'=>"Virginia",'WA'=>"Washington",'WV'=>"West Virginia",'WI'=>"Wisconsin",'WY'=>"Wyoming");

    function showOptionsDrop($array, $active, $echo=true){
        $string = '';

        foreach($array as $k => $v){
            $s = ($active == $k)? ' selected="selected"' : '';
            $string .= '<option value="'.$k.'"'.$s.'>'.$v.'</option>'."\n";     
        }

        if($echo) {   echo $string;}
        else {       return $string;}
    }
?> 

Sonra kullanarak form içinde işlevini çağırır:

<td><select name="State"><option value="">Choose a State</option><?php showOptionsDrop($states_arr, null, true); ?></select></td>

Emin ne ben eksik ama birileri benim kod hata görür varsa yardım isterim değil.

Teşekkürler!

1 Cevap

Koduna bakabilirsiniz:

<?php showOptionsDrop($states_arr, null, true); ?>

Sen null geçiyoruz, bu yüzden $active her zaman olacaktır null. Durum

($active == $k)

never biz true değerlendirecek.

Eğer formdan almak değerini geçmelidir yerine, örneğin:

<?php showOptionsDrop($states_arr, isset($fields['State']) ? $fields['State'] : null,  true); ?>

Gerçekten özellikle ilk örnekte, HTML PHP ayırmak denemelisiniz

Update:

Aslında o kadar değil, ama alternative syntax for control structures kullanmak için düşünün:

<select name="DOB3">
    <optgroup label="Year">
    <?php for ($i=date('Y'); $i>=1900; $i--) : ?>
        <option value="<?php echo $i ?>" 
             <?php echo ($fields["DOB3"] == $i) ? 'selected="selected"' : '' ?> > 
             <?php echo $i ?> 
        </option>
    <?php endforeach; ?>
    </optgroup>
</select>

Eğer seçenekleri etiket çeşit vermek istiyorsanız Ayrıca, optgroup HTML etiketi (bu seçilebilir değildir) ile yapabilirsiniz.