восстановление множественного выбора в списке в PHP/HTML

поэтому у меня есть список с множественным выбором...

<select id="extfeat" name="extfeat[]" size="6" multiple="">  
    <option value="Wheel_Chair Accessible">Wheel Chair Accessible</option>  
    <option value="Fruit_Trees">Fruit Trees</option>   
    <option value="Large_Trees">Large Trees</option>   
    <option value="Rolling">Rolling</option>   
    <option value="Other">Other</option>   
    <option value="Level">Level</option>   
    <option value="Wooded">Wooded</option>   
    <option value="Outbuildings">Outbuildings</option>   
    <option value="Gazebo">Gazebo</option>   
    <option value="Workshop Area">Workshop Area</option>   
    <option value="Sauna">Sauna</option>   
    <option value="Courtyard">Courtyard</option>   
    <option value="Lake_Access">Lake Access</option>   
    <option value="Tillable">Tillable</option>   
    <option value="Deck">Deck</option>   
    <option value="Lakeview">Lakeview</option>   
    <option value="Propane_Tank_-_Leased">Propane Tank - Leased</option>   
    <option value="Dock">Dock</option>   
    <option value="Landscaped">Landscaped</option>  
    <option value="Propane_Tank - Owned">Propane Tank - Owned</option>   
    <option value="Fenced_Yard">Fenced Yard</option>   
    <option value="Water_Frontage">Water Frontage</option>   
    <option value="Concrete_Parking">Concrete Parking</option>   
    <option value="Pond">Pond</option>   
    <option value="Tennis_Court">Tennis Court</option>   
    <option value="Circle_Drive">Circle Drive</option>   
    <option value="Horses_Allowed">Horses Allowed</option>   
    <option value="Patio_Enclosed">Patio Enclosed</option>   
    <option value="Sprinkler_System">Sprinkler System</option>   
    <option value="Brick_Trim">Brick Trim</option>   
    <option value="Guest_House">Guest House</option>   
    <option value="Terraced">Terraced</option>   
    <option value="Hot_Tub">Hot Tub</option>   
    <option value="Outdoor_Sign">Outdoor Sign</option>   
    <option value="Garden">Garden</option>   
    <option value="Above_ground_pool">Above ground pool</option>   
    <option value="Ground_Lvl_Access">Ground Lvl Access</option>   
    <option value="Handicap_Access">Handicap Access</option>   
    <option value="Patio">Patio</option>  
    <option value="Garage_Opener">Garage Opener</option>   
    <option value="In-ground_Pool">In-ground Pool</option>   
    <option value="Greenhouse">Greenhouse</option>   
    <option value="Pasture">Pasture</option>   
    <option value="Shed">Shed</option>   
    <option value="Boat_House">Boat House</option>   
    <option value="Antenna">Antenna</option>   
    <option value="Generator">Generator</option>   
    <option value="Asphalt_Parking">Asphalt Parking</option>   
    <option value="Sloping">Sloping</option>   
    <option value="Porch">Porch</option>   
    <option value="Satellite_Dish">Satellite Dish</option>   
    <option value="Screened_Porch">Screened Porch</option>   
    <option value="Underground_Pet_Fence">Underground Pet Fence</option>   
    <option value="Pool">Pool</option> 

  </select>          

Итак, скажем, пользователь выбирает 7 вариантов и выполняет поиск... мой поиск имеет параметр уточнения, и это вместе со многими другими полями сохраняется и хранится в скрытом div, который можно снова вызвать, нажав кнопку...

проблема в том, что переменная extfeats[] не сохраняет выборки после POST... мне нужно каким-то образом передать существующие множественные выборки в качестве значений по умолчанию.


person menriquez    schedule 26.02.2014    source источник


Ответы (2)


Если вы знаете, какие параметры были выбраны, вы можете пометить их как выбранные по умолчанию с помощью: selected="selected":

<select id="extfeat" name="extfeat[]" size="6" multiple="">  
  <option value="Wheel_Chair Accessible">Wheel Chair Accessible</option>  
  <option value="Fruit_Trees" selected="selected">Fruit Trees</option>
  // ..
</select>

На второстепенной ноте multiple="", вероятно, должно быть multiple="multiple".

person Halcyon    schedule 26.02.2014
comment
эй, спасибо. ну да, я знаю это... но я действительно ищу умный способ назначить выбранное без необходимости проходить весь цикл extfeat[] для каждой записи... должен быть способ... я ОЧЕВИДНО не могу быть первым, кто попытается решить эту проблему... - person menriquez; 26.02.2014
comment
Если вы можете выбрать 7 из n элементов, вам потребуется не более 7*n итераций. Я не вижу простого способа сделать это с меньшим количеством итераций. Распечатка пары <option> должна быть пустяком, это не проблема производительности. Не беспокойтесь о производительности, пока у вас действительно не возникнет проблема с производительностью. - person Halcyon; 26.02.2014
comment
верно...хорошее замечание...попробую сопоставить in_array() и посмотреть, как оно работает...спасибо! - person menriquez; 26.02.2014

ладно... оказалось проще, чем я думал...

<select id="extfeat" name="extfeat[]" size="6" multiple="">  
  <option value="Wheel_Chair Accessible" <? if (in_array("Wheel_Chair Accessible",$extfeat)) echo "selected" ?> >Wheel Chair Accessible</option>  
  <option value="Fruit_Trees" <? if (in_array("Fruit_Trees",$extfeat)) echo "selected" ?>>Fruit Trees</option>  
  ... 

спасибо Frits van Campen за ваш нежный толчок в правильном направлении;)

person menriquez    schedule 26.02.2014