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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыНастройка яндекс директ рекламы БЕЗ РАСХОДОВ БЮДЖЕТА
Количество продаж будет ОГРАНИЧЕННО!
22 ITstaf 4415 Вчера, 21:00
автор: 100ftd
Открытая тема (нет новых ответов) PROXY-STORE.COM — ipV4 прокси от 42р В МЕСЯЦ с ротацией и без! Лучшая цена на рынке. 200+ стран
21 proxystore 5347 19.4.2024, 12:02
автор: proxystore
Открытая тема (нет новых ответов) Большие базы Semrush кейвордов по разным тематикам! Много кейвордов с трафиком и без конкуренции! Volume, KD, CPC
22 Krok 6765 12.4.2024, 5:17
автор: Krok
Открытая тема (нет новых ответов) Скрипты и программы на заказ любой сложности. Без предоплаты. Быстро, качественно и недорого!
5 c4p1t4l15t 2531 6.4.2024, 12:51
автор: c4p1t4l15t
Открытая тема (нет новых ответов) Обменяю Юмани на гривны без комиссии
3 freeax 1007 2.4.2024, 1:46
автор: Llirik


 



RSS Текстовая версия Сейчас: 24.4.2024, 20:24
Дизайн