JSON içine bu onay kutularını açmak için daha iyi bir yolu var söyle

0 Cevap php

Ben millet temas tercih ettikleri yöntemleri seçmesini sağlayan bir form üzerinde çalışıyorum. Diğer şeyler arasında, formu JSON olarak benim veritabanında depolamak için çalışıyorum 9 onay kutularını (üç 3 set) oluşur.

Burada formun ilgili bölümleri var ...

<h1 style="padding-top:25px;">Communication Preferences</h1><hr />
<div class="onethird contactprefs" style="width: 28%">
    <h4>Preferred Method</h4>
    <p>From time to time, we might need to contact you regarding our service.  Which mode of contact would you prefer?</p>
    <p>
    <input type="checkbox" name="preferred[]" value="p" style="display: inline;" />Phone <!-- make these tooltips -->
    <br />
    <input type="checkbox" name="preferred[]" value="e" style="display: inline;" checked />Email
    <br />
    <input type="checkbox" name="preferred[]" value="s" style="display: inline;" />SMS
    </p>
</div>

<div class="onethird contactprefs" style="width: 28%; border-left: solid 1px #cdcdcd; border-right: solid 1px #cdcdcd; padding-left: 18px; padding-right: 15px;">
    <h4>Weather Delays</h4>
    <p>We don't mess with Mother Nature, and sometimes she forces us to cancel service.  If that happens, how should we inform you?</p>
    <p>
    <input type="checkbox" name="weather[]" value="p" style="display: inline;" />Phone
    <br />
    <input type="checkbox" name="weather[]" value="e" style="display: inline;" checked />Email
    <br />
    <input type="checkbox" name="weather[]" value="s" style="display: inline;" />SMS
    </p>
</div>

<div class="onethird contactprefs" style="width: 28%">
    <h4>Holiday Reminders</h4>
    <p>If you'd like us to send you reminders about interruptions in service due to holidays, just choose your preferred method below.</p>
    <p>
    <input type="checkbox" name="holiday[]" value="p" style="display: inline;" />Phone
    <br />
    <input type="checkbox" name="holiday[]" value="e" style="display: inline;" checked />Email
    <br />
    <input type="checkbox" name="holiday[]" value="s" style="display: inline;" />SMS
    </p>

</div>

 <!-- end contact preferences -->

Ben de belirtildiği gibi, ben bu onay kutuları gelen veri almak ve iyi oluşturulmuş JSON dizeye dönüştürmek gerekir.

İşte ben ne yapıyorum, ama çok dağınık görünüyor. Bana daha iyi bir yol gidecekseniz söyle ...

/* THERE MUST BE A BETTER WAY TO DO THIS */
// get the preferred data
$preferred = $this->input->post('preferred');

if(in_array('p',$preferred)){
    $pref['p'] = 1;
}else{ $pref['p'] = 0;}

if(in_array('e',$preferred)){
    $pref['e'] = 1;
}else{ $pref['e'] = 0;}

if(in_array('s',$preferred)){
    $pref['s'] = 1;
}else{ $pref['s'] = 0;}

// get the weather data
$weather = $this->input->post('weather');

if(in_array('p',$weather)){
    $wea['p'] = 1;
}else{ $wea['p'] = 0;}

if(in_array('e',$weather)){
    $wea['e'] = 1;
}else{ $wea['e'] = 0;}

if(in_array('s',$weather)){
    $wea['s'] = 1;
}else{ $wea['s'] = 0;}

// get the holiday data
$holiday = $this->input->post('holiday');

if(in_array('p',$holiday)){
    $hol['p'] = 1;
}else{ $hol['p'] = 0;}

if(in_array('e',$holiday)){
    $hol['e'] = 1;
}else{ $hol['e'] = 0;}

if(in_array('s',$holiday)){
    $hol['s'] = 1;
}else{ $hol['s'] = 0;}

$contact_prefs = array('preferred' => $pref,'weather' => $wea,'holiday' => $hol);
$contact_prefs = json_encode($contact_prefs);

Fikir için şimdiden teşekkür ederiz.

0 Cevap