Javascript.RU

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

Nexus,
ну если для такой, то слишком много.

Если по уму и тип должен определять клиент, то:

<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<style>
.field:first-child .del {
    display: none;
}
</style>
<script type="text/javascript">
$(function() {
    $('#add').click(function() {
       $('div.field').first()
                     .clone()
                     .appendTo('form')
                     .find('input,select').val('')
                     .end()
                     .find('a').click(function() {
                        $(this).parent().remove()
                     })     
    });
    $('form').submit(function(e) {
        e.preventDefault();
        //....
    })
});
</script>
</head>
<body>
<form>
<div class="field">
            <div class="col_left">
                <div class="border">
                    <input type="text" name="tag[]" required="" value="" placeholder="TAG" />
                </div>
            </div>
            <div class="col_centr">
                <div class="border">
                    <input type="text" name="tag_name[]" required="" value="" placeholder="Название поля" />
                </div>
            </div>
            <div class="col_right">
                <div class="border">
                    <select required="" name="tag_template[]">
                        <option value="">Выберите</option>
                        <option value="1">Текстовое</option>
                        <option value="2">Числовое с переводом числа в текст</option>
                        <option value="3">Срок исполнения</option>
                    </select>
                </div>
            </div>
            <a class="del">Удалить</a>
            <div class="clear"></div>
        </div>
<button>Send</button>
</form>
<a id="add">Добавить</a>
</body>
</html>
Ответить с цитированием
  #22 (permalink)  
Старый 07.11.2017, 13:52
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,750

laimas, я сегодня Вас не понимаю
Сообщение от laimas
ну если для такой, то слишком много
Если "слишком много" - про кол-во кода, то в наших реализациях принципиальная разница, отсюда и разница в символах.
Ответить с цитированием
  #23 (permalink)  
Старый 07.11.2017, 13:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Nexus,
именно "количество", автору то всего надо клонировать и добавить. А "громоздкость" его кода из-за пагубного представления, что field_name_1, field_name_2, это удобно.
Ответить с цитированием
  #24 (permalink)  
Старый 07.11.2017, 14:27
Интересующийся
Отправить личное сообщение для skitskis Посмотреть профиль Найти все сообщения от skitskis
 
Регистрация: 07.11.2017
Сообщений: 21

laimas,
Это то что нужно )))
До этого я не работал с передачей массива через input.
На сервере обрабатываю так:
$count = count($_POST['tag'])-1;
    for($i=0;$i<=$count;$i++) {
            $tag[$i]['tag'] = $_POST['tag'][$i];
            $tag[$i]['tag_name'] = $_POST['tag_name'][$i];
            $tag[$i]['tag_template'] = $_POST['tag_template'][$i];
        
    }
Ответить с цитированием
  #25 (permalink)  
Старый 07.11.2017, 14:38
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,750

skitskis, можно так:
for($i=0;$i<count($_POST['tag']);$i++)


<?php
	for($i=0;$i<count($_POST['tag']);$i++){
		$tag[$i]=array();
		foreach(array('tag','tag_name','tag_template') as $key)
			$tag[$i][$key]=isset($_POST[$key][$i])?htmlspecialchars($_POST[$key][$i]):null;
    }
Ответить с цитированием
  #26 (permalink)  
Старый 07.11.2017, 14:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от skitskis
На сервере обрабатываю так:
$count = count($_POST['tag'])-1;
for($i=0;$i<=$count;$i++) {
Зачем?
Ответить с цитированием
  #27 (permalink)  
Старый 07.11.2017, 14:53
Интересующийся
Отправить личное сообщение для skitskis Посмотреть профиль Найти все сообщения от skitskis
 
Регистрация: 07.11.2017
Сообщений: 21

laimas,
я еще это добавляю в сессию, так как у меня есть еще другие поля, и если они не заполнены, мне нужно потом подставить обратно уже заполненные, ну а после уже добавить в базу данных значения. По другому я не знаю как ))
Ответить с цитированием
  #28 (permalink)  
Старый 07.11.2017, 15:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от skitskis
я еще это добавляю в сессию, так как у меня есть еще другие поля, и если они не заполнены, мне нужно потом подставить обратно уже заполненные
И что, это повод для того чтобы "перекладывать" данные из одного места в другое, имеется ввиду из массива $_POST в массив $tag? Что это дает? Ничего полезного, если уж и сохранить в сессии, то достаточно $_SESSION['name'] = $_POST, зачем здесь ненужный цикл?

Я не знаю чего еще не заполнено (единственное что можно предположить, это не знаем ID новой записи, но это иной вопрос), но если добавление данных, это этапы, то значит на каждом из них требуется проверка, которую вы обязаны делать - проверка обязательного заполнения, истинность данных (соответствие каждого из наборов). И таковую проверку просто сделать без явных циклов, для этого в РНР масса функций для работы с массивами.

А коли запись в базу, то гораздо полезнее будет подготовить из наборов полей данные для каждой строки в sql-таблице, в которые они будут вставлены. А делается это опять таки просто:

$data = array_map(null, $_POST['tag'], $_POST['tag_name'], $_POST['tag_template']);


Но после того как данные будут проверены и не будет выявлено ошибок.
Ответить с цитированием
  #29 (permalink)  
Старый 07.11.2017, 15:12
Интересующийся
Отправить личное сообщение для skitskis Посмотреть профиль Найти все сообщения от skitskis
 
Регистрация: 07.11.2017
Сообщений: 21

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

Nexus,
htmlspecialchars - не надо этого, вредное занятие при записи в базу.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление значение в поле input file – в коллекции files все равно содержится файл. artur567 Events/DOM/Window 1 08.05.2016 18:00
Добавление новых INPUT по нажатию ENTER paveltkachev jQuery 10 24.12.2014 11:35
удаление input psfdek Элементы интерфейса 1 05.06.2014 10:29
При добавлении DOCTYPE "плывут" размеры input type=text Demath (X)HTML/CSS 4 08.07.2012 19:27
Добавление текста к input элементу Cepin Элементы интерфейса 4 05.05.2010 09:10