HTML Forms - Использование массивов для полей - PullRequest
0 голосов
/ 07 декабря 2011

Имеют форму

<div class="customer">

<input type="text" name="customer" />
<input type="text" name="address" />
<select name="married">
  <option value="0">No</option>
  <option value="1">Yes</option>
</select>

</div>

Используя jQuery, пользователи могут добавлять в форму столько клиентов, сколько им нужно.Как сохранить каждого клиента отдельно для проверки и для базы данных?Я полагаю, что использование поля массива является ответом, но меня беспокоят пустые значения, такие как отсутствие адреса или невозможность ответить на «женатый» вопрос.

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Вам нужно будет добавить [] ко всем вашим полям, так что в вашем случае это будет выглядеть так:

<div class="customer">
   <input type="text" name="customer[]" />
   <input type="text" name="address[]" />
   <select name="married[]">
     <option value="0">No</option>
     <option value="1">Yes</option>
   </select>
 </div>

Затем, используя язык на стороне сервера, такой как php, вы можете анализировать данные:

$customer = $_REQUEST['customer']; // array holding all customer fields
$address = $_REQUEST['address'];  // array holding all address fields
$married = $_REQUEST['married']; // array holding all married fields
0 голосов
/ 07 декабря 2011

Это мои модификации существующего плагина, который я нашел, хотя я не помню, где я его нашел.

Если вы возьмете это, вы можете взять число входных данных, которые вы вставите туда, и просто зациклитьчерез представления.Например, вы должны создать div с идентификатором readroot, каждый вход в который будет дублироваться, когда человек нажимает на кнопку, чтобы дублировать фактический div.Вы можете создать кнопку с помощью кнопки morefields (), чтобы выполнить воспроизведение div.Затем внутри вашего PHP-файла, где вы собираете опубликованные данные, вы можете собрать значение numberof и просмотреть, например, код ниже.

JQUERY:

var counter = 1; 
function morefields() { 
  formClone = $('#readroot').clone(true); 
  $(formClone).css("display", "block"); 
  counter++; 
  $(formClone).attr("name", 'readroot' + counter); 
  $(formClone).attr("id", 'readroot' + counter);
  $(formClone).find("input, select, textarea").each(function() { 
    var s = $(this).attr("name")+counter; 
    var t = $(this).attr("id")+counter;
    $(this).attr("name", s); 
    $(this).attr("id", t); 
  }); 
  $("#writeroot").append(formClone); 
  var a = $(formClone).attr("id"); 
  $('#numberof').val(counter);
}

PHP:

$number=$_POST['numberof'];
$num=0;
while($num <= $number){
  $field=($num==0 ? $_POST['field'] : $_POST['field' . $num]);
  $text=($num==0 ? mysql_real_escape_string($_POST['text']) : mysql_real_escape_string($_POST['text' . $num]));
  $num++;
  if ($num==1) { $num=2; }
}

Это прекрасно работает для меня, так что, надеюсь, это немного вам поможет или покажет, что еще вы можете сделать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...