X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Реализация добавления поля формы без перезагрузки
sc2r2bey
sc2r2bey
Topic Starter сообщение 31.7.2009, 16:48; Ответить: sc2r2bey
Сообщение #1


есть форма

<form name="add" action="form.php" method="POST">
    <input type="text" name="pole" value="" />
    <input type="button" value="добавить" name="add" />
    <input type="button" value="удалить" name="remove" />
    <input type="submit" value="сохранить" name="save" />
</form>


как сделать, чтоб при нажатии кнопки добавить добалелось идентичное поле pole без перезагрузки и инициализировалось новое имя этого поля,
а при удалении удалялась без перезагрузки, и как получить потом массив со значениями pole[], при нажатии кнопки сохранить и переходе в form.php


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 31.7.2009, 20:16; Ответить: yury_mw
Сообщение #2


sc2r2bey,
динамическую форму можно сделать, примерно, так:
<html>
<head>
<title>Dynamic form</title>
<script type="text/javascript">
var nfields = 1;

function addfield() {
str = '';
nfields++;
for (i = 1; i <= nfields; i++) {
str += (i == 1 ? '' : '<br />');
tsrt = (i == nfields ? '' : document.getElementById('pole'+i).value);
str += '<input type="text" name="pole['+i+']" id="pole'+i+'" value="'+tsrt+'" /> <input type="button" value="удалить" name="remove'+i+'" onClick="rmfield('+i+');" />\n';
}
document.getElementById('poles').innerHTML = str;
}

function rmfield(pos) {
str = '';
delta = 0;
for (i = 1; i <= nfields; i++) {
if (i == pos) {
delta = 1;
}
else {
tpos = i-delta;
str += (tpos == 1 ? '' : '<br />');
tsrt = document.getElementById('pole'+i).value;
str += '<input type="text" name="pole['+tpos+']" id="pole'+tpos+'" value="'+tsrt+'" /> <input type="button" value="удалить" name="remove'+tpos+'" onClick="rmfield('+tpos+');" />\n';
}
}
document.getElementById('poles').innerHTML = str;
nfields--;
}


</script>
</head>
<body>
<form name="add" action="form.php" method="POST">
<input type="button" value="добавить" name="add" onClick="addfield();" />
<div id="poles"><input type="text" name="pole[1]" id="pole1" value="" /> <input type="button" value="удалить" name="remove1" onClick="rmfield(1);" /></div>
<input type="submit" value="сохранить" name="save" />
</form>
</body>
</html>

* будут добавляться новые текстовые поля в конец с именем поля "pole[N]"
* у каждого поля своя кнопка на удаление
* в form.php массив pole[] будет доступен через $_POST['pole'];


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 1.8.2009, 0:09; Ответить: sc2r2bey
Сообщение #3


спасибо дружище буду пробывать, потом будут вопросы :)


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 1.8.2009, 15:16; Ответить: sc2r2bey
Сообщение #4


если я правильно понял, то по такому типу можно сделать и checkbox ставишь галочку появляется поле для загрузки изображения, удаляешь исчезает или группу полей?


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 1.8.2009, 20:27; Ответить: yury_mw
Сообщение #5


sc2r2bey,
добавлять и убавлять можно и группу полей и все прочее, что только можно закодировать хтмл-ом.

Про "checkbox, галочку и поле для загрузки изображения" непонятно, почему нужна именно галочка и что вы, собственно, от них всех хотели.
Но, есть подозрение, что ничто не мешает и их "сделать" по такому же типу. ;)


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 1.8.2009, 20:40; Ответить: sc2r2bey
Сообщение #6


осталось разобраться как этот массив из POST вытянуть подскажите?
кстати а почему name="pole[1]" ведь массивы начинаются с 0?


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 1.8.2009, 20:58; Ответить: yury_mw
Сообщение #7


(sc2r2bey @ 1.8.2009, 20:40) *
кстати а почему name="pole[1]" ведь массивы начинаются с 0?

sc2r2bey,
[php]echo $_POST['pole'][1]; //$_POST['pole'] - это уже массив, но если сильно хочется, то для красоты можно создать новый, например, так:
$pole = $_POST['pole'];
print_r($pole);
echo $pole[1];[/php]
(sc2r2bey @ 1.8.2009, 20:40) *
кстати а почему name="pole[1]" ведь массивы начинаются с 0?

в php массивы начинаются с чего угодно и вообще могут индексироваться, чем удобно программисту, например, могут быть такие элементы массива:
pole[1] pole[2] pole['a'] pole['b'] pole['some'] pole['something else'] и т.п.
я проиндексировал массив по числу строчек, типа у первой строчки номер 1, у второй - 2, но можно было, например, и с нуля индексировать, для этого достаточно было в качестве имен полей указать не "pole[N]", а просто "pole[]".


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 1.8.2009, 21:05; Ответить: sc2r2bey
Сообщение #8


супер я практически понял, ты меня подправил а как тогда вычислить количество элементов массива и с какого номера начинается массив?
делаю через count ('$pole'); выдает 1 хотя там больше значений

блин бзе кавычек надо было count ($pole);
теперь циклом можно загнать их в бд, правильно?


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 1.8.2009, 21:34; Ответить: yury_mw
Сообщение #9


(sc2r2bey @ 1.8.2009, 21:05) *
супер я практически понял, ты меня подправил а как тогда вычислить количество элементов массива и с какого номера начинается массив?

количество элементов в массиве возвращает функция count($pole)

про то с какого номера начинается массив, встречный вопрос:
вот вам массив:
$forest = array('деревья' => array('липа', 'осина', 'елка'),
              'звери' => array('тигр', 'лев', 'обезьян'));

который элемент в нем первый? ;)

есть такое понятие, как внутренний указатель массива.
функция reset() устанавливает внутренний указатель массива на "первый элемент" и возвращает его (указатель).
вообще для работы с массивами есть много специальных функций, например, foreach, которая позволяет "перемещаться" по массивам, про нее можно почитать, например, тут: foreach


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 1.8.2009, 21:36; Ответить: sc2r2bey
Сообщение #10


спасибо, Мастер!


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) PROXY-STORE.COM — ipV4 прокси от 42р В МЕСЯЦ с ротацией и без! Лучшая цена на рынке. 200+ стран
18 proxystore 4708 Вчера, 20:00
автор: proxystore
Открытая тема (нет новых ответов) Скрипты и программы на заказ любой сложности. Без предоплаты. Быстро, качественно и недорого!
4 c4p1t4l15t 2238 26.3.2024, 21:38
автор: c4p1t4l15t
Открытая тема (нет новых ответов) Сайт не индексируется в Google без добавления ссылок в адурилку
4 Nekit 996 20.3.2024, 21:44
автор: MorKer
Открытая тема (нет новых ответов) JustProxy - Резидентые прокси без ограничения по трафику
Residential rotating proxy
16 justproxy 5642 20.3.2024, 14:57
автор: ManagerAE8888
Открытая тема (нет новых ответов) Большие базы Semrush кейвордов по разным тематикам! Много кейвордов с трафиком и без конкуренции! Volume, KD, CPC
20 Krok 6229 18.3.2024, 5:43
автор: Krok


 



RSS Текстовая версия Сейчас: 29.3.2024, 19:14
Дизайн