Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> неопределенное количество полей формы, javascript+php 
:(
    Опции темы
Sukhof
Дата 23.12.2004, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 18.4.2004
Где: Тюмень

Репутация: 0
Всего: 2



как-то уже спрашивал, про то что яваскрипт формирует новые поля формы, удалось создать такой скрипт, но вот вопрос. Суть работы скрипта такая при нажатии на кнопку "добавить" в браузере появляются новые поля, каждому новому полю в конец добавляется новая цифра, т.е. name=qty1 name=qty2 name=qty3, заодно скрипт передает количество, полей. на странице к которой осуществляется переход необходимо осуществить отправку в бд, короче вот:

Код

<script language="JavaScript">
var items=1;
function AddItem() {
 div=document.getElementById("items");
 button=document.getElementById("add");
 items++;
newitem="<strong>Предмет " + items + ":</strong>";
 newitem+="<input type=\"text\" name=\"qty" + items;
 newitem+="\" size=\"10\"> ";
 newitem+="<input type=\"hidden\" name=\"all\" value=\""+ items;
 newitem+="\" size=\"10\"> ";



newitem+="<strong>Описание </strong>";
 newitem+="<input type=\"text\" name=\"item" + items;
 newitem+="\" size=\"35\"><br>";
 newnode=document.createElement("span");
 newnode.innerHTML=newitem;
 div.insertBefore(newnode,button);
}
</script>
</head>
<body>
<form name="form1" action='5.php' method=post>
<div ID="items">
<strong>Предмет 1</strong> <input type="text" name="qty" size="10">
<strong>Описание</strong> <input type="text" name="item" size="35">
<br>

<input type="button" value="Добавить" onClick="AddItem();" ID="add" class="b">
</div>



файл 5.php

Код

for ($i; $i <= $all; $i++) {// где all это количество полей

               $a = '$qty'.$i;
               $inf = '$item'.$i;

               echo 'предмет:'.$a.'описание:'.$inf.'<br>';
               // вместо echo производим отправку всех данных в бд
                 }



все работает но вот вопрос, как быть с этим $HTTP_POST_VARS['qty']; ведь не включить это в цикл for чтобы к йен присваивалось цифра qty1 qty2 qty3 и т.д. а заранее расписывать глупо, ведь иногда количество этих полей может быть сотни т.е. будет и qty150 и т.д.

А может есть вообще другой способ гораздо проще.

--------------------
Не бойся делать то, что не умеешь. Помни Ковчег построил любитель, а Титаник профессионалы.
PM MAIL   Вверх
Mont
Дата 23.12.2004, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Vingrad developer
Сообщений: 274
Регистрация: 13.11.2004
Где: Altay

Репутация: 8
Всего: 12



замени стороку
Код

newitem+="<input type=\"text\" name=\"qty" + items;

на
Код

newitem+="<input type=\"text\" name=\"qty[]";


в итоге все поля у тебя будут в массиве qty


--------------------
"Если однажды Вдруг
Меня не окажется вовсе
в заповедной заветной тарелке
Твоего праведного сновидения
Знай - Неуловимые мстители настигли меня."
© Егор Летов
PM MAIL ICQ   Вверх
Vaulter
Дата 23.12.2004, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



Sukhof
я бы сделал так:
Код

newitem="<strong>Предмет " + items + ":</strong>";
 newitem+="<input type=\"text\" name=\"qty[" + items+"]";
 newitem+="\" size=\"10\"> ";
 newitem+="<input type=\"hidden\" name=\"all\" value=\""+ items;
 newitem+="\" size=\"10\"> ";

тогда в $_POST[qty] будет массив полей, попробуй


--------------------
PM MAIL WWW ICQ   Вверх
Begemot
Дата 24.12.2004, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.12.2004

Репутация: нет
Всего: нет



Я сталкивался с подобным вопросом и решил ее не с помощью $_POST, а с функцией EVAL
PM MAIL   Вверх
IZ@TOP
Дата 24.12.2004, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Begemot, молодец, скажи мне пожалуйста на каком сайте это все работает, хочу его взломать. Подобные дыры нужно закрывать. Правило безопасности №1.1 "Никогда не пользуйся функцией Eval при обработке данных полученных от пользователя".


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.