2013-03-12 1 views
0

Отредактировано ** Будучи новичком в Perl, это крутой lol. Я просто использовал регулярное выражение и свой хэш. Я читал свои cgi-параметры.Perl, используя JQuery для отображения html onclick looped database insert

my $regex = qr/tierrate/; 
my $count = 0; 

foreach (grep { /$regex/ } keys %form) { 
$count++; 
} 

Тогда я могу просто использовать этот счет, чтобы определить мой цикл вставки.


еще раз, я новичок в программировании. Мои навыки JQuery и Perl - это, в лучшем случае, новичок.

Я ищу, чтобы иметь возможность вставлять несколько записей в таблицу базы данных в зависимости от количества строк таблицы, добавленных пользователем. Я не уверен, как справиться с этим, так как это моя первая нестатическая попытка. Я использую cgi.pm и dbi.pm.

Я показываю некоторый HTML на основе нажатия кнопки. Я показываю и пытаюсь вставить «уровень уровня» «минимальный уровень уровня» и «максимальный диапазон уровней» для каждого времени, когда пользователь выбирает кнопку «добавить уровень». Пользователь может щелкнуть по кнопке столько раз, сколько потребуется, и они получат дополнительную таблицу для каждого щелчка, я не уверен, как прокручивать динамическое количество строк.

На основании щелчка пользователем кнопки «добавить уровень», я показываю HTML.

\$('#addnewtier').click(function() { 

\$('<tr id="inctier'+ (raisetierid++) +'"><TD ALIGN=left><font color="#ADD8E6">Tier '+ (rateplus++) +' Rate</TD><TD ALIGN=left><input type="text" name="tierrate'+ (tierrate++) +'" size=10 value="00.00" ></TD><TD ALIGN=left><font color="#ADD8E6">Tier '+ (rangeplus++) +' Range</TD><TD ALIGN=left><font color="#ADD8E6">Minimum&nbsp;<input type="text" name="rangemin'+ (rangemin++) +'" size=10 value="" ><font color="#ADD8E6">&nbsp;Maximum&nbsp;<input type="text" name="rangemax'+ (rangemax++) +'" size=10 value="" ></TD>').appendTo("#inctier1"); 

}) 

Пользователь может нажать кнопку столько раз, сколько пожелает. Я знаком с возможностью захвата ввода на множестве чего-то, но не столько с динамическим количеством чего-то. Я объявляю переменные, которые я увеличиваю чуть выше кода, который я опубликовал. Заранее спасибо за помощь.

+0

Я не совсем понимаю, что вы там делаете. Но вы, вероятно, захотите создать переменную javascript, которая будет увеличиваться для каждой новой строки, которую добавляет пользователь. Затем отправьте это значение, когда пользователь отправляет строки. Тогда ваш скрипт Perl будет знать, сколько строк есть. Это один из возможных подходов. Я не знаю, как в Perl, но должен быть способ найти количество полей, представленных формой, которые вы можете использовать в своем цикле. – Jodes

+0

Мне нужно вставить одну запись таблицы базы данных за строку, которую добавляет пользователь. В строке я вставляю скорость, минимальный уровень и максимальный диапазон. Так что, если пользователь три раза нажимает кнопку, чтобы добавить 3 "уровня", мне нужно вставить три записи через цикл, который я предполагаю. Но что я могу использовать для выполнения цикла? Могу ли я просто использовать переменную, объявленную в JQuery? Кажется, это не работает для меня. – kyle

ответ

1

Когда ваш jQuery добавляет новую строку, добавьте переменную счетчика в вашу форму, тогда в вашем коде perl используйте это, чтобы прокрутить ваши vars (это будет работать лучше всего как сообщение, но вы можете использовать get, если вам нужно) и прочитайте каждую строку, в которой вы нуждаетесь.

Других слов, в вашем HTML форме создать поле ввода, которое скрыто под названием tierCount Затем в JQuery добавить обновить новую строка его на номер вместо
Кроме того, необходимо использовать только 1 переменные приращения когда добавление новых строк

затем в вашем PERL скрипт вы читаете форму значение tierCount и петли через форму VARS читать их в одном наборе в то время

<input type="hidden" name="tierCount" value="1" /> 
\$('<tr id="inctier'+ (raisetierid++) +'"><TD ALIGN=left><font color="#ADD8E6">Tier '+ (raisetierid) +' Rate</TD><TD ALIGN=left><input type="text" name="tierrate'+ (raisetierid) +'" size=10 value="00.00" ></TD><TD ALIGN=left><font color="#ADD8E6">Tier '+ (raisetierid) +' Range</TD><TD ALIGN=left><font color="#ADD8E6">Minimum&nbsp;<input type="text" name="rangemin'+ (raisetierid) +'" size=10 value="" ><font color="#ADD8E6">&nbsp;Maximum&nbsp;<input type="text" name="rangemax'+ (raisetierid) +'" size=10 value="" ></TD>').appendTo("#inctier1"); 

$('#tierCount').val(raisetierid); 

my $tierCount = $form{"tierCount"} 
# Since we start with tier 1 start at 1 instead of the usual 0 
for (my $i = 1; $i <= $tierCount; $i++) 
{ 
    my $rate = $form{"rateField" . $i}; 
    my $range = $form{"rangeField" . $i}; 
    # Etc, etc 
    # then do your insert here for that row 
} 

Обратите внимание, что приведенный выше код не имеет какой-либо проверка ошибок на месте

Смежные вопросы