Показать сообщение отдельно
  #10 (permalink)  
Старый 11.01.2019, 10:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Екатерина_2404
поле sum заполняет балл выбранного значения select.
Это полнейшая чушь, ибо это просто добавление в форму лишнего элемента тогда, когда сам список обеспечит тоже самое. Вот так:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style>
#datatable {
    width: 600px;
    border-collapse: separate;
}
#datatable td {
    border: 1px solid #ccc;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
    var tbl = $('#datatable').on('click', 'button', function() {
        var src = $(this), tr = src.closest('tr');
        if(src.hasClass('add')) tr.clone()
                                  .find('td:eq(1)')
                                  .text('')
                                  .end()
                                  .find('button')
                                  .toggleClass('add del')
                                  .text('Удалить строку')
                                  .end()
                                  .appendTo(tbl);
        else tr.remove() 
    }).on('change', 'select', function() {
        $(this).parent().next().text(this.value)
    });    
})
</script>
</head>

<body>

<table id="datatable">
    <tr>
        <td>
            <select name="set[]" class="opt">
                <option value="">Выберите ...</option>
                <option value="80">- грант в рамках академической мобильности</option>
                <option value="60">- международные конкурсы, олимпиады (1 место)</option>
                <option value="50">- международные конкурсы, олимпиады (2 место)</option>
                <option value="40">- международные конкурсы, олимпиады (3 место)</option>
                <option value="50">- всероссийские конкурсы, олимпиады (2-3 тур, 1 место)</option>
                <option value="40">- всероссийские конкурсы, олимпиады (2-3 тур, 2 место)</option>
                <option value="30">- всероссийские конкурсы, олимпиады (2-3 тур, 3 место)</option>
                <option value="20">- региональные конкурсы, олимпиады (1 место)</option>
                <option value="15">- региональные конкурсы, олимпиады (2 место)</option>
                <option value="10">- региональные конкурсы, олимпиады (3 место)</option>
                <option value="15">- городские или вузовские конкурсы, олимпиады (1 место)</option>
                <option value="10">- городские или вузовские конкурсы, олимпиады (1 место)</option>
                <option value="5">- городские или вузовские конкурсы, олимпиады (1 место)</option>
            </select>
        </td>
        <td></td>
        <td>
            <button class="add">Добавить строку</button>
        </td>
    </tr>
</table>
</body>
</html>


И тут нет никакого sum, выбранное значение ОПЦИИ списка просто отображается в соседней ячейке (зачем это нужно не понятно), а списку дано имя set[]. Если добавить еще несколько строк и сделать выбор в списках, то на сервере будет получен массив ($_GET или $_POST в зависимости от метода передачи формы), в котором под ключом set будет массив всех значений, которые были выбраны в списках. Зачем тут еще другое поле кроме списка нужно?! Пусть форма передается методом POST, тогда на сервере:

if( $_POST['set'] && $data = array_diff(array_map('intval', $_POST['set']), [0])) {
    //массив $data будет содержать все значения выбранные во всех списках
}


Сообщение от Екатерина_2404
второе я имела ввиду, что сам select сразу хранить в таблице базы и от туда выводить на страницу через PHP
Ну в общем так и поступают, если опции для этого списка могут добавляться/удаляться, но хранить их как 5, 10, ... и какой-то текст можно только в том случае, если значение для опций, это уникальные значения, в противном случае хранить надо под уникальным id каждую запись, для которой будут поля значений опций и их текста. А в таблицу в которую вносятся некие записи с которыми связан этот список записывают или id, или значение опции, если они уникальны.

Последний раз редактировалось laimas, 11.01.2019 в 10:05.
Ответить с цитированием