Только 1 значение Jquery UI Multiselect отправляется через PHPmailer - PullRequest
2 голосов
/ 22 февраля 2011

Я работаю над формой контакта, в которой неправильно публикуются ответы с несколькими вариантами ответов.Я использую PHPMailer-FE для отправки результатов формы.PHPMailer-FE содержит файл класса php, конфигурационный скрипт и файл TPL.

Я столкнулся с проблемой с виджетом Райана Крамера jquery.amselect.js, в котором слово "Array" отправляется в электронном письме вместоразделенный запятыми список выбранных значений.

Вот пример виджета amselect в действии: http://www.ryancramer.com/projects/asmselect/examples/example1.html.

Вот HTML:

   <select style="width: 200px !important;" id="cards" name="cards[]" multiple="multiple" title="Choose All That Apply" >
            <option value="Visa">Visa</option>
            <option value="Mastercard">Mastercard</option>
            <option value="Amex">American Express</option>
            <option value="Discover">Discover</option>
            <option value="Diners">Diner's Club</option>
            <option value="JCB">JCB</option>
            <option value="Visa-Delta">Visa Debit/Delta</option>
            <option value="Switch-Maestro">Switch/Maestro</option>
            <option value="solo">solo</option>
            <option value="Visa-Electron">Visa Electron</option>
          </select>

Благодаря @aSeptik я теперь понимаюЧтобы решить эту проблему, мы можем использовать тег implode.В его рабочей демонстрации php включен в начало HTML-файла:

$message .= implode(', ',$_POST['cards']);

Я попытался использовать тег implode в моем TPL или файле класса, но безуспешно.

Любая помощь будет принята с благодарностью. Я очень стараюсь решить эту проблему.Большое спасибо!С уважением, Нолан

Ответы [ 3 ]

1 голос
/ 22 февраля 2011

ОБНОВЛЕНО: (Пример PHPMailer-FE + amselect)

1 голос
/ 22 февраля 2011

Обычно это вызвано неправильным присвоением имен вашим входам.Раньше я не использовал multi select, но я бы предположил, что ваши входные теги должны выглядеть примерно так:

<input type="checkbox" name="myBox[]" />
<input type="checkbox" name="myBox[]" />
<input type="checkbox" name="myBox[]" />

и т.д ...

Обратите внимание, что вам нужно иметь квадратные скобкидля обозначения массива в атрибуте имени.PHP покажет переменную в виде массива, если вы сделаете это.

В вашем случае (теперь вы добавили пример) Вам просто нужно сделать так, чтобы ваш тег select имел оператор массива в конце:

<select class="mydrop" name="cards-accepted[]" multiple="multiple" size="5">
</select>
0 голосов
/ 28 февраля 2011

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

Входные данные, которые он генерирует, не подходят для публикации на сервере, потому чтоу всех одинаковое имя.В PHP нет способа различать входные данные с одинаковыми именами (если они не включают в себя обозначения в скобках - [] - тогда они обрабатываются как массивы)

Я смоделировал здесь небольшую демонстрацию:

http://jsbin.com/upuhe/edit

Используйте что-то вроде firebug для проверки флажков, и вы увидите, что все они имеют одинаковые имена.

Если бы я использовал вас, я бы использовал JQuery для переименования чекбоксов, которые ваш плагинсоздает так:

см .: http://jsbin.com/upuhe/2/edit

$("select").multiselect()
  .each(function(){

    var selectEl = $(this);        
    var selectElName = selectEl.attr("name")

    selectEl.multiselect("widget")
      .find("input[type=checkbox]")
        .attr({ name: selectElName });
})

Предполагается, что вы установили что-то похожее на <select name='select[]' multiple='multiple'>

...