2010-03-12 12 views
90

Bilinen sayıda sütun içeren (örneğin, üst çap, alt çap, kumaş, renk, miktar) bir php formuna sahibiz. satırları ihtiyaç duydukları şekilde ekleyin.POST yoluyla çok boyutlu bir diziyi php ile gönderme

Her bir alanın (sütunlar) nasıl alınacağını ve bunları kendi dizilerine nasıl yerleştireceğimi keşfettim.

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

Yani HTML ile bitirmek şudur: Şu anda yapmak istiyorum ne

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

tüm satır ve sütun çok boyutlu bir diziye koymak almak ve içeriğini e-posta olduğunu istemciye (tercihen güzel formatlanmış bir tabloda). Tüm bu girdileri birleştirmeyi ve güzel bir diziyi seçmeyi gerçekten anlayamadım. Bu noktada, tek bir 2B dizi kullanmanın birkaç 1D dizisinden daha iyi bir uygulama olacağını düşünmeme rağmen, birkaç 1D dizisini kullanmayı denemek zorunda kalacağım. Böyle oluşturulmuş sanki

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

cevap

131

, bir dizi alacağı:

Böyle adlandırma ile tüm parametreleri göndermek olabilir
+0

Teşekkürler! Buna yakınlaşmaya başlamıştım, ancak sütun ve satırlar ters çevrilmişti. – Fireflight

+0

Metin alanlarını klonlama ve liste isimleri ekleme konusunda herhangi bir denetiminiz olmadı Howgına nasıl bir isim veriniz? Name = "çaplar [0] [top]' Birden fazla isimde varsa ne yapabilirim? sol ve sağ? @DisgruntledGoat –

15

:

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

daha sonra böyle bir şey yapmak

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

Ancak, form adlarınızı şu biçime değiştirmenizi öneririm:

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

Bu biçimi kullanarak, değerler arasında geçiş yapmak çok daha kolaydır.

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>'; 
} 
İlgili konular