2010-02-04 3 views
0

Мой бэкэнд принимает значения идентификатора запятой «11,12,13». На переднем конце у меня есть контрольный список, который позволяет многократно выбирать и размещает следующее.PHP/XSLT несколько экземпляров одной и той же quertystring

someurl.com?id=11 & ID = 12 & ID = 13

Как использовать $ _GET для нескольких экземпляров ID, формат его в запятыми строку? Или, наоборот, есть ли лучший способ заставить контрольные списки отправить форму в формате, который я хочу?

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

<xsl:choose> 
    <xsl:when test="$id = *"> 
     <option selected="selected"> 
      <xsl:value-of select="*"/> 
     </option> 
    </xsl:when> 
    <xsl:otherwise> 
     <option> 
      <xsl:value-of select="*"/> 
     </option> 
    </xsl:otherwise> 
</xsl:choose> 

Это хорошо, когда выбран только один вариант, но с кратными, как бы вы обрабатывать несколько экземпляров этого значения идентификатора $ в URL?

Любая помощь и решения очень ценятся.

ответ

1

Я не использую php, но я считаю, что вы хотите ?id[]=11&id[]=12&id[]=13 получить массив [11,12,13] в параметре id.

Боюсь, что описание проблемы xslt слишком коротко для меня, чтобы понять. Прежде всего, я не понимаю, почему вы хотите установить атрибут selected в интерфейсе в первую очередь. Тогда я предложил бы DRY:

<option> 
    <xsl:if test='...'> 
    <xsl:attribute name='selected' value='"selected"'/> 
    </xsl:if> 
    <xsl:value-of select='*'/> 
</option> 

Что касается самого теста, что вы получаете от сервера при выборе нескольких элементов таким образом, сервер понимает? Был бы простой

<xsl:if test="contains(concat(',', $ids, ','), concat(',', *, ','))"> 

работа?

Смежные вопросы