2012-02-09 4 views
3

В jQuery легко добавить дополнительные поля в html-форму. Затем мы можем сериализовать поля, если они имеют одинаковые name, но что, если у нас есть набор полей? НапримерДобавить (наборы) полей для создания jQuery

<input type="text" name="movie1_name" /> 
<input type="text" name="movie1_director" /> 
<input type="text" name="movie1_year" /> 

Теперь я хочу, чтобы добавить новый набор полей JQuery, как

<input type="text" name="movie2_name" /> 
<input type="text" name="movie2_director" /> 
<input type="text" name="movie2_year" /> 

и так далее. Я обрабатываю форму с помощью PHP для вставки фильмов в базу данных mysql с тремя столбцами (имя, режиссер, год). В вышеупомянутом примере сложно сериализовать поля для создания соответствующих $ _POST массивов. Как мне сериализовать набор фильмов с добавлением jquery?

+0

Я не понимаю ваш вопрос. – elclanrs

+0

Я добавил больше описания, чтобы уточнить. – Googlebot

ответ

1

на основе полезной дискуссии с Cheery, я пришел к выводу, что самый лучший и безопасный способ заключается в использовании

<input type="text" name="movie_name[i]" /> 
<input type="text" name="movie_director[i]" /> 
<input type="text" name="movie_year[i]" /> 

где мы определяем каждый i с JQuery для правильной сериализации полей. Таким образом, мы можем быть уверены, что сериализованные массивы параллельны и хорошо сопоставлены, без ошибок.

+0

Я не понимаю, как поля могут быть неуместны в любом случае, как вы упоминаете? Если вы добавите новое поле соответственно, ему следует следовать, что второе имя будет добавлено в качестве второго директора и года (и т. Д.). – JM4

0

Вы можете сделать что-то вроде этого:

<input type="text" name="movie1_name" /> 
<input type="text" name="movie1_director" /> 
<input type="text" name="movie1_year" /> 
// OTHER: 
<input type="text" name="movie2_name" /> 
<input type="text" name="movie2_director" /> 
<input type="text" name="movie2_year" /> 

И сделать это все ... В Jquery, вы создаете функцию, которые создают поле нужно ... Я не самый лучший в JQuery так Я не могу помочь вам в этом, но, как я сказал, вы отлично справились со мной с PHP ...

+0

то как читать его с помощью PHP? $ _POST ['movie2_name'], но сколько у нас фильмов? Представьте себе, что до $ _POST ['movie15_name'] мы должны рассмотреть один за другим. – Googlebot

+0

Я думаю, что есть способ подсчитать количество '$ _POST ['movieXX_name']' в PHP и создать 'foreach()' ... Browser Google или задать вопрос ... Я не использую это, потому что 'foreach()' function, я ненавижу его. –

3
<input type="text" name="movie_name[]" /> 
<input type="text" name="movie_director[]" /> 
<input type="text" name="movie_year[]" /> 

<input type="text" name="movie_name[]" /> 
<input type="text" name="movie_director[]" /> 
<input type="text" name="movie_year[]" /> 

Больше ничего. На сервере вы получите (в случае POST) массив в $ _POST ['movie_name'], $ _POST ['movie_director'] и $ _POST ['movie_year'] ;. Элементы с тем же индексом относятся к одному набору входов.

Какая проблема с сериализацией у вас есть?

<form> 
<input type="text" name="movie_name[]" /> 
<input type="text" name="movie_director[]" /> 
<input type="text" name="movie_year[]" /> 
<hr /> 
<input type="text" name="movie_name[]" /> 
<input type="text" name="movie_director[]" /> 
<input type="text" name="movie_year[]" /> 
<br /> 
<input type='button' id='serialize' value='Click me' /> 
</form> 

и JS код:

$('#serialize').click(function(){ 
    alert($('form').serialize()); 
}); 

, когда вы хотите, чтобы представить данные просто написать

пс: если вы боитесь потерять что-то, просто сравнить счетчик ($ _ POST ['movie_name']), count ($ _ POST ['movie_director']) и count ($ _ POST ['movie_year']).

или вы можете добавить индексы

<input type="text" name="movie_name[0]" /> 
    <input type="text" name="movie_director[0]" /> 
    <input type="text" name="movie_year[0]" /> 

    <input type="text" name="movie_name[1]" /> 
    <input type="text" name="movie_director[1]" /> 
    <input type="text" name="movie_year[1]" /> 
+0

Сначала я думал об этом; но представьте себе из-за ошибки одно одиночное поле (например, movie_director2) не отправлено. Тогда поля будут неуместны в строках. Я знаю, что это маловероятно; но это может привести к хаосу в базе данных с неправильными данными (страшно). – Googlebot

+0

@Ali Как это может быть не отправлено?Подсчитайте каждый массив и проверьте, что у вас одинаковое количество элементов. Добавьте индексы, если вы чего-то боитесь. – Cheery

+0

Эта двойная проверка на PHP - это тонкий трюк! – Googlebot

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