Php ile POST aracılığıyla çok boyutlu bir dizi gönderme

2 Cevap php

Ihtiyaç duydukları gibi, kullanıcıların satır ekleyebilirsiniz olarak ben, sütun bilinen bir dizi (örneğin üst çapı, alt çapı, kumaş, renk, miktar) vardır, fakat satır sayısı bilinmeyen sahip bir php form var.

Ben alanlar (sütunlar) her alır ve kendi bir diziye yerleştirmek için nasıl keşfetti ettik.

<input name="topdiameter['+current+']" type="text" id="topdiameter'+current+'" size="5" />
<input name="bottomdiameter['+current+']" type="text" id="bottomdiameter'+current+'" size="5" />

Peki ben HTML ile sona olduğunu:

<tr>
  <td><input name="topdiameter[0]" type="text" id="topdiameter0" size="5" /></td>
  <td><input name="bottomdiameter[0]" type="text" id="bottomdiameter0" size="5" /></td>
</tr>
<tr>
  <td><input name="topdiameter[1]" type="text" id="topdiameter1" size="5" /></td>
  <td><input name="bottomdiameter[1]" type="text" id="bottomdiameter1" size="5" /></td>
</tr>

...and so on.

Ne şimdi yapmak istiyorum, tüm satırlar ve sütunlar çok boyutlu bir diziye koymak almak ve (tercihen bir güzel biçimlendirilmiş tablo) müşteriye bunun içeriğini e-posta olduğunu. Gerçekten güzel bir dizi içine tüm bu girdileri ve seçer birleştirmek için nasıl anlamak mümkün olmamıştır.

Ben bir tek 2D dizi kullanarak birkaç 1D dizileri kullanarak daha iyi bir uygulama olacağını fikrim yok, ancak bu noktada, ben, birkaç 1D diziler kullanmaya çalışın zorunda gidiyorum.

(Edit: kodu küçük yazım hatası)

2 Cevap

Bu gibi oluşturulan sanki göndererek, bir dizi olacaktı:

$_POST['topdiameter'] = array( 'first value', 'second value' );
$_POST['bottomdiameter'] = array( 'first value', 'second value' );

Ancak, bunun yerine bu formata form adları değişen öneririm:

name="diameters[0][top]"
name="diameters[0][bottom]"
name="diameters[1][top]"
name="diameters[1][bottom]"
...

Bu biçimi kullanarak, bu değerler döngü çok daha kolay.

if ( isset( $_POST['diameters'] ) )
{
    echo '<table>';
    foreach ( $_POST['diameters'] as $diam )
    {
        // here you have access to $diam['top'] and $diam['bottom']
        echo '<tr>';
        echo '  <td>', $diam['top'], '</td>';
        echo '  <td>', $diam['bottom'], '</td>';
        echo '</tr>';
    }
    echo '</table>';
}

Bu tür adlandırma ile tüm parametreler gönderebilir:

params[0][topdiameter]
params[0][bottomdiameter]
params[1][topdiameter]
params[1][bottomdiameter]

daha sonra böyle bir şey yapın:

foreach ($_REQUEST['params'] as $item) {
    echo $item['topdiameter'];
    echo $item['bottomdiameter'];
}