Açılır veritabanı girişlerinin göre belirledi

4 Cevap php

Yani, otomatik doldurmak açılan, "Evet" seçimi için bir seçme istiyorum, ya da alternatif olarak, "Hayır". Bir veritabanı sorgudan döndürülen değer seçilebilir hangi açılan değerlendirmek için kullanılacaktır.

, Açılan sağ seçim otomatik doldurmak istiyorum kod yazmak için bir yol: Ben sadece 2 conditionals yazmak için bir doğru / yanlış otomatik nüfus beri düşündüm, ama daha iyi (daha az dağınık kod okuma) orada olacağını düşündüm veritabanından sonucuna göre.

Ben görünümünde kullanıcı için aşağı düşüşün seçmek istiyorsunuz bir dize ekleyerek sonra, seçtiği tüm karşı değişkeni kontrol olacaktır yazmaya çalışıyorum kod tabanı.

Benim soru yerine değeri aşağı olası her damla için conditionals yazma bunu yapmak için basit bir yol var olurdu?

CodeIgniter PHP ile yazılmış isteği Kodu:

 $this->db->select('row'); 
 $result = $this->db->get('table');

 // This just selects and returns the values. This code does work, I'm just looking for a better way to do this task that someone might know, because I'm going to have drop downs with hundreds of possibilities, of which, I want the predefined one to be selected.

 // Assume $result->row = "Yes"

 if ( $result = "Yes" ) {  
    #Code for echo'ing radio button with "Yes" selected
       }

 else {  
    #Code for echo'ing radio button with "No" selected
       }

4 Cevap

Eğer Form Helper CI kontrol ettiniz mi? Sen form_radio kullanmak ve üçüncü parametre seçmek istediğiniz değeri temin edebilir:

form_radio('field_name', 'Yes', $result == 'Yes');
form_radio('field_name', 'No', $result == 'No');

İlk parametre İkinci parametre alan için değeri ve üçüncü parametre boolean, alan adı (DOĞRU: radyo seçilen, YANLIŞ: seçili değil). Bu bir radyo olduğundan, alan adı aynı olmalıdır.

Böyle bir şey çalışması gerekir. Gerçi, gereksinimleri ve veri ne gibi birçok varsayımlar yapmak.

// The selected value
$selectedValue = 'foo';

// Database results, assuming a structure like so
$results = array(
  array(
    'id' => 1,
    'value' => 'foo'
  ),
  array(
    'id' => 2,
    'value' => 'bar'
  )
);

echo '<select name="selectField">';

foreach ($results as $result) {
  echo '<option value="'.$result['id'].'"';

  // Here we see if this result is the selected value.
  // If so, we spit out the HTML so the user's browser renders it as such.
  if ($result['value'] == $selectedValue) {
    echo ' selected="selected"';
  }

  echo '>'.$result['value'].'</option>';
}

echo '</select>';

Sorunuzu biraz kafa karıştırıcı gibi görünüyor. Eğer kodu radyo düğmeleri söz, ama soru dropdowns soruyor.

Belirli bir değeri esas radyo düğmeleri veya açılan bir dizi seçenek görüntülemeniz gerekiyorsa, bir dizi olarak seçimlerinizi tanımlayabilirsiniz:

$data = array(
    'yes' => array('option1', 'option2', 'option2', 'etc'),
    'no' => array('option1', 'option2', 'option2', 'etc'),
    'somethingelse' => array('option1', 'option2', 'option2', 'etc')
);

Ve bu gibi kullanmak:

$query = $this->db->select('row')->get();

if ($query->num_rows() > 0) {
    $result = $query->row();

    if (array_key_exists(strtolower($result->row), $data)) {
        foreach ($data[$result->row] as $row) {
            // Use $row as you need
        }
    }
}

Hatta yeniden kullanılabilirlik için bir fonksiyon içine sarın.

Teşekkürler Erisco, sadece yazı ile bir şey ile bana yardımcı oldu.

Benim sürüm olsa daha temel ve herhangi bir anahtar => değer çiftleri başvurulmadan, kırpılmış olduğunu. Sadece bir önceki açılır menüden tüm seçenekleri, içinden döngüleri içeren bir dizi kurar [o da açılır menüden doldurur gibi], ve kullanıcı önceki seçmişti eşleşen ve eğer 'seçilen' seçeneğini ayarlar veritabanına kaydedilir:

<?php           
$naybpopulate = array('Bernal Heights', 'Castro', 'Chinatown', 'Cole Valley', 'Fishermans Wharf', 'Forest Hill', 'Haight-Ashbury', 'Hayes Valley', 'Inner Richmond', 'Inner Sunset', 'Japantown', 'Marina', 'Mission', 'Mission Bay', 'Nob Hill', 'Noe Valley', 'North Beach', 'Outer Richmond', 'Outer Sunset', 'Pacific Heights', 'Potrero Hill', 'Presidio', 'Russian Hill', 'SoMa', 'South Beach', 'Telegraph Hill', 'Tenderloin', 'Union Square', 'Western Addition', 'West Portal');

        echo '<select name="neighborhood" id="neighborhood">';

foreach ($naybpopulate as $nayb) {
echo '<option value="'.$nayb.'"';

// Here we see if this result is the selected value.
// If so, we spit out the HTML so the user's browser renders it as such.
if ($nayb == $neighborhood) {
echo ' selected="selected"';
}

echo '>'.$nayb.'</option>';
}

echo '</select>';
?>

Yığın taşması en iyisidir. Siz :) kaya.