SORU
12 Mart 2010, Cuma


Php ile POST ile çok boyutlu bir dizi gönderme

Sütun (örn. bilinen bir numarası olan bir php form var üst çapı, taban çapı, kumaş, renk, miktar), ama kullanıcılar olarak satır ekleme gibi satır sayısı bilinmeyen vardır.

Bu alanlar(sütunlar) her nasıl keşfetti ve kendi dizisine onlara yer verdim.

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

Ben HTML ile sonu ne olur:

<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.

Şimdi yapmak istediğim tüm satırları almak ve sütunlar çok boyutlu bir dizi içine koymak ve müşteri bu içeriği (güzelce biçimlendirilmiş bir tablo tercihen) e-posta. Tüm bu girdileri birleştirmek için nasıl gerçekten anlamak mümkün olmamıştır ve güzel bir diziye seçer.

Bu noktada, tek bir 2D dizi kullanarak birkaç 1D dizileri kullanarak daha iyi bir uygulama olacağını bilmiyorum, ancak birkaç 1D diziler kullanmak için denemek için gidiyorum.

(edit: kodda yazım hatası küçük)

CEVAP
12 Mart 2010, Cuma


Gönderme, eğer böyle yaratılmış gibi bir dizi olacaktı:

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

Ancak, bu biçim, form adları yerine değiştirmeyi öneriyorum:

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

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

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>';
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CrazyMan

    CrazyMan

    14 Mayıs 2008
  • LG Mobile Global

    LG Mobile Gl

    2 EYLÜL 2010
  • pissengehen

    pissengehen

    26 EYLÜL 2006