не показывать повторяющиеся значения в моем раскрывающемся списке - PullRequest
0 голосов
/ 26 февраля 2012

Мне нужна помощь с моей логикой здесь. Я заполняю значение из базы данных в поле выбора.

Если оно существует, я отображаю значение, иначе я отображаю параметры по умолчанию.

Теперь, например, если значение из базы данных - Нью-Джерси, я не хочу отображать Нью-Джерси во второй раз в моем раскрывающемся списке. Как я могу это сделать?

    <select name="location" class="field" >

                <option value="<?php if(!empty($get_location)){ echo $get_location; } ?>"><?php if(!empty($get_location)){ echo $get_location; }?></option>

                <option value="New Jersey">New Jersey</option>

                <option value="New York">New York</option>

                <option value="California">California</option>
            </select>

Ответы [ 4 ]

1 голос
/ 26 февраля 2012

Вы делаете оператор if в каждом поле опции и проверяете, совпадает ли значение из базы данных со значением поля опции, и если это так, вы echo "selected=\"true\"" в поле опции.пример см. мой ответ на этот вопрос: получите данные из mysql и отобразите в форме

0 голосов
/ 26 февраля 2012

Получите ваши местоположения одним запросом к базе данных, добавьте их в массив вместе со значениями по умолчанию, если только одно местоположение делает так, как показано ниже, если несколько местоположений разбирают их в массив и объединяют их со значениями по умолчанию, выполните команду array_unique, чтобыизбавиться от дубликатов и вывести массив в цикле.

<select name="location" class="field">
    <?php
       $output = array(1=>'New Jersey', 2=>'New York', 3=>'California', 4=>$get_location);
       $options = array_unique($output);

       foreach($options as $key => $value) {
           echo '<option value="'.$value.'">'.$value.'</option>';
       }
     ?>
</select>
0 голосов
/ 26 февраля 2012

Я бы немного изменил ваш php-код, чтобы добавить значения по умолчанию, а затем вы можете фильтровать и удалять дубликаты с помощью jQuery. Если есть много вариантов, это может быть не лучшим решением, хотя ...

PHP

<select name="location" class="field">
    <?php if(!empty($get_location)): ?> 
        <option value="<?php echo $get_location; ?>">
            <?php echo $get_location; ?>
        </option>
    <?php else: ?>
        // Defaults
    <?php endif; ?>
</select>

JQuery

var removeDup = function($select){
    var val = '';
    $select.find('option').each(function(){
        if ($(this).val() === val) { $(this).remove(); }
        val = $(this).text();
    });
};
removeDup($('#yourSelect'));
0 голосов
/ 26 февраля 2012

Если вы только хотите, чтобы значения вашей базы данных отображались:

<?php
   // You populate an array with the locations from your database
   // As an example:
   $options = array(1=>'New Jersey',2=>'Los Angeles');

   $html = '<select name="locations">';
   foreach($options as $id => $option)
   {
      $html .= '<option id="'.$id.'">'.$option.'</option>';
   }
   echo $html.'</select>';
?>

Если вы хотите, чтобы со значениями в вашей базе данных происходило что-то особенное, но все равно загружайте значения по умолчанию:1006 *

<?php
   // You populate an array with the locations from your database
   // As an example:
   $options = array(1=>'New Jersey',2=>'Los Angeles');

   // Compare against your full list of locations
   // As an example:
   $locations = array(1=>'New Jersey',2=>'Los Angeles',3=>'California',4=>'London');

   $html = '<select name="locations">';
   foreach($options as $id => $option)
   {
      if(array_key_exists($id,$locations))
      {
         // Enter your magic
      }
   }
   echo $html.'</select>';
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...