2012-06-12 6 views
0

Я использую JQuery, чтобы создать столько входных текстовых полей, как пользователь должен выглядеть примерно так:Вставка значений JS созданных входных текстовых полей в базу данных

<script type="text/javascript"> 
$(document).ready(function() { 
$('#names').on({ 
    blur: function() { 
     var name = $("<p><input class='input' type='text' /></p>") 
     var nullFields = 0; 
     $(this).closest('div#names').find('input.input').each(function(){ 
      if($(this).val() == ""){ 
       nullFields++; 
      } 
     }); 
     console.log(nullFields); 
     if(nullFields <= 1){ 
     $('#names').append(name.fadeIn(500)); 
     } 
    } 
}, 'input'); 
}); 
</script> 

Установка статического текстового поля в базе данных не является проблемой используя $_POST['blah'] и mysql_query("INSERT INTO ..."), но как вставить значения динамически созданных текстовых полей? Я знаю, что мне придется придать текстовым полям разные имена по мере их создания, и я предполагаю, что запрос MySQL будет выполнен в виде своего рода цикла.

EDIT

Сайт о котором идет речь here, в частности, на этапе 4. Как уже упоминалось выше, шаг 3 был довольно прост.

ответ

1

Это пример, чтобы вы начали, а не полное решение. Вы создаете массив для имен, то есть PHP вставить каждый элемент массива

var currentArrayNum = 1;  
$('#someClickable').click(function(){ 

     $('#td').append('<input name="arrayName['+currentArrayNum+']" value="" />'); 
     currentArrayNum += 1; 
    }); 

PHP:

foreach ($_POST as $key){ 
     if (is_array($key)){ 
       foreach ($key as $key2 => $value){ 
       //$key2 will equal arrayName[currentArrayNum] 
       //$value will equal the user input for the text field 
do some stuff 
} 
+1

Вы можете просто использовать 'name []' без какого-либо индекса. – scriptin

+0

Большое спасибо за ваш ответ. Несколько вопросов: 1. Есть ли способ проверить javascript? Динамически созданные текстовые поля не отображаются в исходном коде. 2. Что именно делает PHP? Я не совсем понимаю, что делает ключ $ ... – Sebastian

+0

Когда вы отправляете свою форму на страницу PHP, которая входит в базу данных, POST является массивом. $ _POST [ключ] = значение. Динамически созданные текстовые поля теперь представляют собой массив внутри этого массива. Этот скрипт найдет массив (is_array) и примет каждое значение как $ key2 и присвоит значение $. теперь вы можете получить доступ к этому в своем цикле foreach. может не быть лучшим способом для того, что вы делаете, но мне нужно будет увидеть, как вы хотите записать его в базу данных. Используйте print_r ($ _ POST); умереть(); в вашем скрипте php, чтобы увидеть массив –

0

Вы можете создать массив из названия, просто попробуйте это:

<input type="text" name="post_input[input_1]" value=""> 
<input type="text" name="post_input[input_2]" value=""> 

После отправки вы получите массив из $ _POST ["post_input"] с ключами input_1 и input_2 и их назначенными значениями. Затем вы просто зацикливаете их как обычный массив, например

$aTextFields = $_POST["post_input"]; 
foreach($aTextFields as $sValue) { 
    ... 
} 
Смежные вопросы