07.01.2018, 04:11
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Dbnfkbq
|
Устройство - какой либо счетчик, у которого надо записать дату изготовления, снять показатели с него...
|
Имелось ввиду не техническая штука сама по себе, а элемент формы ее определяющий, если речь шла о "больше 1", и требуется код это выполняющий.
Собственно вам кроме показанной структуры описывающей прибор нужна еще и кнопка "Добавить", по щелчку на которой клонировать первый элемент ".devices" (надо полагать, что хотя бы один прибор в форме должен быть), найти в клонированном список и поля ввода, сбросив их значения, после чего клонированное добавить в форму.
Но, поля формы не имеющие имен на сервер преданы не будут, а у вас ни одно поле не имеет имени, хотя идентификаторы ненужные имеют все. Идентификатор является уникальным значением, а при клонировании он будет дублироваться. Поэтому все идентификаторы выбросить.
Как именовать поля формы зависит от того, как они будут разбираться на сервере, то есть какой на сервере язык программирования используется. К примеру в РНР есть возможность самостоятельно ковырять сырые данные формы. Но проще получить уже готовое из массивов $_GET/$_POST, в которые РНР сам поместит данные пришедшей формы. При клонировании полей формы будут клонированы и их имена, а это будет означать, что в массив будут поступать одни и те же ключи. Так как в массиве не может быть дубликатов ключей, то РНР будет перезаписывать данные одноименных ключей. В итоге в массиве останутся значения последних одноименных полей формы. Чтобы этого не произошло поля формы можно именовать как элементы массива. Например список Тип так:
<select class="form-control" name="type_device[]">
Поле класса точности
<input type="text" class="form-control" name="class_tochnost[]" placeholder="Класс точности" required>
и т.п. Если форму отправить методом POST, то в массиве $_POST под ключами type_device и class_tochnost будут индексные массивы значений этих полей с количеством равным добавленных в форму полей. Как примечание: type_device и при этом class_ tochnost, это как жаргон гопника на вечеринке деятелей искусства.
Что касается сохранения массива в базе, то не каждая база может хранить в себе массив как структуру. Самый дешевый вариант, как бесплатный, практически на всех хостах имеющийся, это MySQL, у которой нет типа Array, и записать в себя массив она не может. Но по большому счету этого и не требуется в данном случае. Кроме этого, форму содержащую помимо элементов описывающих множество устройств, которые кому-то как-то принадлежат, и эти "хозяева" также оперируют в форме, никак нельзя впихнуть в одну sql-таблицу.
Если есть вопрос "Потом в итоге заполненную форму в виде массива в БД отправлять? Или как с ним работать?" значит у вас вообще ничего нет, либо вы так далеки от этого, что ... А ведь приложение нужно начинать с проектирование БД, ибо она как матка в улье, скрипты же, это рабочие пчелы ее обслуживающие, а формы, это трутни ее оплодотворяющие. У вас получается, что матки нет, но есть трутни.
Последний раз редактировалось laimas, 07.01.2018 в 04:14.
|
|
08.01.2018, 11:23
|
Интересующийся
|
|
Регистрация: 06.01.2018
Сообщений: 13
|
|
Хорошо, спасибо. Все замечания учту и исправлю.
С именами да, понимаю, оправдание, что полей много, а воображение и память англ слов заканчивалась хоть и ужасное, но есть При исправлении id на name все учту.
По поводу БД, вы, конечно, правы. Не отрицаю, что далек от этого, с БД мне еще не приходилось работать (точнее связывать с БД что-либо), но есть задача разобраться в этом.
Исправлю все замечания, попытаюсь красиво реализовать клонирование, составлю БД, а потом буду обращаться сюда снова
|
|
09.01.2018, 14:57
|
Интересующийся
|
|
Регистрация: 06.01.2018
Сообщений: 13
|
|
Сообщение от laimas
|
Если есть вопрос "Потом в итоге заполненную форму в виде массива в БД отправлять? Или как с ним работать?" значит у вас вообще ничего нет, либо вы так далеки от этого, что ... А ведь приложение нужно начинать с проектирование БД, ибо она как матка в улье, скрипты же, это рабочие пчелы ее обслуживающие, а формы, это трутни ее оплодотворяющие. У вас получается, что матки нет, но есть трутни.
|
Здравствуйте, по ходу исправлений возникла идея, что если при помощи select давать пользователю выбор, сколько устройств необходимо описать, и при переходи на следующий шаг, их кол-во уже будет создано(если это возможно). Как мне это видится: мы получаем цифру (кол-во устройств) из select, затем с помощью массива, где длинной будет это кол-во создать форму с name[i]. Это возможно?
|
|
10.01.2018, 15:01
|
Интересующийся
|
|
Регистрация: 06.01.2018
Сообщений: 13
|
|
Получилось реализовать, как хотел. Спасибо.
Получилось так:
function class_clone(c_clone) {
if (c_clone == 1)
$(".device_num").text("Прибор №1");
else {
for (var i = 0; i < c_clone-1; i++)
$(".devices").clone().addClass("newElement").appendTo("#third_step .form");
}
}
Добавляю новый класс, так как если копировать придется 3 раза, будет копироваться класс с уже одной копией
Последний раз редактировалось Dbnfkbq, 10.01.2018 в 15:03.
|
|
10.01.2018, 15:54
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Зачем список для выбора, если надо добавить, добавили, надо еще один, добавили, а нужно удалить добавленное, тоже не проблема.
|
|
10.01.2018, 16:50
|
Интересующийся
|
|
Регистрация: 06.01.2018
Сообщений: 13
|
|
Сообщение от laimas
|
Зачем список для выбора, если надо добавить, добавили, надо еще один, добавили, а нужно удалить добавленное, тоже не проблема.
|
Да, уже это понял, получилось все сделать как нужно.
|
|
10.01.2018, 17:01
|
Интересующийся
|
|
Регистрация: 06.01.2018
Сообщений: 13
|
|
Сообщение от laimas
|
Зачем список для выбора, если надо добавить, добавили, надо еще один, добавили, а нужно удалить добавленное, тоже не проблема.
|
Подскажите, как мне теперь обработать данные в php (как получить все данные), и, на данном этапе, вывести их в файл каждый с новой строки?
|
|
10.01.2018, 17:22
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Зачем в файл и каким образом? Я писал каким образом поля формы можно именовать, чтобы оперировать ими на сервере. Что у вас делается я не знаю.
|
|
12.01.2018, 14:02
|
Интересующийся
|
|
Регистрация: 06.01.2018
Сообщений: 13
|
|
Сообщение от laimas
|
Зачем в файл и каким образом? Я писал каким образом поля формы можно именовать, чтобы оперировать ими на сервере. Что у вас делается я не знаю.
|
Я дал всем имена, как вы сказали, я спрашиваю про то, как мне их в виде массива теперь получить, чтобы работать с ними?
|
|
12.01.2018, 14:36
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
$_POST или $_GET в зависимости от метода передачи.
|
|
|
|