Массив, отображающий только одну запись

Друзья,

Я заранее прошу прощения за повторную публикацию этого вопроса.

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

Ошибка была решена, и результат отображался.

Проблема в том, что массив отображает одну запись.

Когда мы вставляем несколько строк записей, отображается только одна запись.

Кто-нибудь знает, что может быть не так?

По умолчанию, пользователю по умолчанию предоставляется один ряд текстовых полей.

Если пользователю необходимо добавить дополнительные записи, он нажимает кнопку «Добавить», чтобы динамически добавить дополнительную строку текстовых полей,

Код ниже взят со страницы под названием preview.php. Предполагается захватить все записи, введенные пользователем на странице разметки, и отобразить их, чтобы у пользователя была возможность просмотреть записи и вернуться, чтобы внести изменения, если это необходимо, или отправить записи, если все в порядке.

Как указано выше, он отображает только одну запись независимо от того, создал ли пользователь одну строку или несколько строк.

Мы хотели бы захватить все строки.

Любые идеи, что я мог бы упустить с кодом ниже?

Я заранее прошу прощения. Я должен показать это завтра на работе, и это заняло все мои выходные.

<?php
//echo "DEBUG POST DATA: <pre>".print_r($_POST, 1)."</pre>";
if(isset($_POST['employeename']))
$employeename = $_POST['employeename'];
if(isset($_POST['ttitle']))
$ttitle = $_POST['ttitle'];

echo $employeename .'<br>';
echo $ttitle .'<br> <hr width=400 align=left>';

$rowIDs = $_POST['rowIDs'];

for ($id = 0; $id < $rowIDs; $id++){
$sourcename1 = $_POST['sourcename1'][$id];
$sourceaddress1 = $_POST['sourceaddress1'][$id];
$income1 = $_POST['income1'][$id];

echo $sourcename1 .'<br>';
echo $sourceaddress1.'<br>';
echo $income1.'<br>';
}
?>DEBUG POST DATA:
Array
(
[employeename] => Catherine Duffy
[ttitle] => Sr. Systems Analyst
[rowIDs] => 1
[sourcename1] => Array
(
[0] => Mark

Zverkov
)

[sourceaddress1] => Array
(
[0] => Address1
)

[income1] => Array
(
[0] => $79,000.00
)

[sourcename13] => Jim Brown
[sourceaddress13] => 32 Xooker Rd
[income13] => $99,000.00
[spousename] =>
[spouseAddress] =>
[spouseIncome] =>
[dividentname] =>
[dividentaddress] =>
[dividentAmt] =>
[reimbursmentName] =>
[reimburseAddr] =>
[remursementAmt] =>
[inputHonoraria] =>
[giftname] =>
[giftaddress] =>
[giftamount] =>
[orgname] =>
[orgaddresss] =>
[donationamt] =>
[creditorname] =>
[creditoraddress] =>
[creditAmt] =>
[email] =>
[submitted] => true
)
Catherine Duffy
Sr. Systems Analyst

Mark Zverkov
Address1
$79,000.00

// Markup

<script id="row-template" type="text/x-handlebars-template">
<div>
<!--reseed attribute IDs in case of gap resulting from deletions -->
<input type="hidden" name="rowIDs[]" value="{{rowNumber}}" />
<div class="form-group">
<label for="sourcename{{rowNumber}}">Name</label><br>
<input type="text" name="sourcename1{{rowNumber}}" id="sourcename1{{rowNumber}}" value="" class="required requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</div>
<div class="form-group">
<label for="sourceaddress1{{rowNumber}}">Address</label><br>
<input type="text" name="sourceaddress1{{rowNumber}}" id="sourceaddress1{{rowNumber}}" style="width:250px;" class="form-control" value="" class="required requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</div>
<div class="form-group">
<label for="income1{{rowNumber}}">Income</label><br>
<input type="text" style="width:250px;"  class="form-control" name="income1{{rowNumber}}" id="income1{{rowNumber}}" value="<?php if(isset($_POST['spouseIncome{{rowNumber}}'])) echo $_POST['spouseIncome{{rowNumber}}'];?>" class="required requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</div>
<input id="Button{{rowNumber}}" type="button" rel="remove-row" value="Remove" />
</div>
</script>
<div id="addrow">
<div>
<!--reseed attribute IDs in case of gap resulting from deletions -->
<input type="hidden" name="rowIDs[]" value="{{rowNumber}}" />
<div class="form-group">
<label for="sourcename">Name</label><br>
<input type="text" name="sourcename1[]" id="sourcename1" value="" class="required requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</div>
<div class="form-group">
<label for="sourceaddress1">Address</label><br>
<input type="text" name="sourceaddress1[]" id="sourceaddress1" style="width:250px;" class="form-control" value="" class="required requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
</div>
<div class="form-group">
<label for="income1">Income</label><br>
<input type="text" name="income1[]" id="income1" style="width:250px;"  class="form-control" value="" class="required requiredField" />
<?php if($nameError != '') { ?>
<span class="error"><?=$nameError;?></span>
<?php } ?>
<input type="button" value="Add More" rel="add-row" />
</div>
</div>
</div><br><br>

-1

Решение

Судя по фрагментам кода и отладке, которые вы разместили, ваш PHP-код ожидает данные в другом формате, чем генерирует ваша HTML-форма. Ясно, что у вас много работы с формой, я мог бы предложить начать новую, пустую страницу и заново создать форму по частям, чтобы убедиться, что каждая часть отправляется правильно перед добавлением следующего блока полей.

Конкретно для вопроса получения нескольких записей из формы, если вы отформатируете свой HTML для части формы, которая повторяется (при условии {{ rowNumber }} заменяется 1, 2, 3… каждый раз, когда добавляется новый) вот так:

<div class="this-div-gets-repeated">
<label>
Source Name:
<input type="text" name="source[{{ rowNumber }}][name]"/>
</label>
<label>
Source Address:
<input type="text" name="source[{{ rowNumber }}][address]"/>
</label>
<label>
Income:
<input type="text" name="source[{{ rowNumber }}][income]"/>
</label>
</div>

Они, вы можете ожидать, чтобы разобрать его в PHP, как это:

<?php
$sources = isset($_POST['source']) ? $_POST['source'] : []; // just in case no sources are posted
foreach ($_POST['source'] as $id => $source) {
$sourcename = $source['name'];
$sourceaddress = $source['address'];
$income = $source['income'];
echo "$sourcename<br>$sourceaddress<br>$income<br>";
}

Изменить: дальнейшие комментарии к вашему HTML
Ваша HTML-форма имеет два блока: набор полей для первой «записи», а затем повторяющийся шаблон для любых дополнительных записей.
Первая проблема с вашим HTML заключается в том, что поля формы «первая запись» имеют имена, отличающиеся от полей формы «больше записей»:
Поля формы «Первая запись» имеют такие поля, как <input type="text" name="sourcename1[]"/>,
Ваши поля формы «больше записей» имеют такие поля, как <input type="text" name="sourcename1{{rowNumber}}"/>,
Если бы вы посмотрели на HTML, который генерируется после того, как вы несколько раз нажали «Добавить больше», ваш HTML выглядел бы так:

<!-- the default "first record" -->
<input type="text" name="sourcename1[]"/>

<!-- from the first click on "Add More" -->
<input type="text" name="sourcename11"/>

<!-- from the second click on "Add More" -->
<input type="text" name="sourcename12"/>

Из этого видно, как значения, введенные в поля «первая запись», будут выглядеть иначе, чем значения из динамически добавляемых полей «добавить больше»?

Также кажется, что с вашими шаблонами Angular происходит какая-то странность: ваш PHP $ _POST содержит значения из полей «первая запись» (в [sourcename1] => Array), и есть значения из ваших полей «добавить еще» (в [sourcename13] => Jim Brown где {{rowNumber}} было 3), но вы намеренно начинаете {{rowNumber}} в 3 в угловом?

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector