显示动态添加的多数组元素

时间:2012-07-04 23:03:03

标签: php

我有一个javascript,可以创建两种类型的元素。 在提交表单时添加了PHP代码,但我在上面显示了它。

第一种类型如下:

<tr class="disc">
    <span><?php echo $disc_number ?></span>.
</tr>

第二种类型如下:

<tr class="track">
    <input name="trackNumbers[]" value="<?php echo $track_number ?>" />
    <input name="discNumbers[]" value="<?php echo $disc_number ?>" />
</tr>

“track”元素对于一个“disc”元素可以是多个。

例如:

<tr class="disc">
    <span>1</span>.
</tr>
<tr class="track">
    <input name="trackNumbers[]" value="1" />
    <input name="discNumbers[]" value="1" />
</tr>
<tr class="track">
    <input name="trackNumbers[]" value="2" />
    <input name="discNumbers[]" value="1" />
</tr>
<tr class="disc">
    <span>2</span>.
</tr>
<tr class="track">
    <input name="trackNumbers[]" value="1" />
    <input name="discNumbers[]" value="2" />
</tr>
<tr class="track">
    <input name="trackNumbers[]" value="2" />
    <input name="discNumbers[]" value="2" />
</tr>

要在提交每个“track”元素时显示我正在使用“for”命令。

for ($track_i = 0; $track_i < $total_tracks; $track_i++)

但是“光盘”元素呢?如何使我的“光盘”元素也在提交时显示,并在它们后面加上“跟踪”元素。

2 个答案:

答案 0 :(得分:1)

如果我正确理解你的意思,你需要将轨道元素与光盘编号相关联......所以使用多维数组:

<tr class="track">
    <input name="trackNumbers[<?php echo $disc_number ?>][]" value="<?php echo $track_number ?>" />
</tr>

如果我没记错的话,这将产生(在提交时为PHP)数组数组,其中每个第一级数组(每个光盘一个)包含一个轨道数组(每个轨道一个)。

foreach($_POST['trackNumbers'] as $discNumber => $tracksArray) {
...

答案 1 :(得分:1)

你现在设置它的方式是你有两个独立的数组轨道和光盘,以获得与正确的光盘相关的轨道号我将设置输入元素如下:

    <input name="trackNumbers[1][]" value="2">

如果1是光盘编号,您可能需要传入一次光盘编号,然后在后端使用它们来循环并拉出与光盘编号对应的所有曲目。