2016-08-31 2 views
0

私はいくつかのコードに取り組んでいますが、私は固執しているようです...誰もがループフォームの正しいソースコードを修正できますか?フォームで配列をループする

<pre> 
<form action='' method='POST'> 
<input type='text' name='jml'> 
<input type='submit' name='submit'> 
</form> 

<form action='' method='POST'> 
<?php 
if(isset($_POST['jml'])){ 
    $jml = $_POST['jml']; 
    for($i=0;$i<$jml;++$i){ 
?> 
    Stuff Name <input type="text" name="name">&nbsp 
    Stuff Price <input type='text' name='price'><br> 
    <br> 
<?php 
} 
echo "<input type='submit' name='submit2'>"; 
echo "</form>"; 
} 
if(isset($_POST['submit2'])){ 
    $name[] = $_POST['name']; 
    $price[] = $_POST['price']; 
    global $jml; 
    for($i=0;$i<$jml;++$i){ 
     echo $name.' '.$price.'<br>'; 
    } 
} 
?> 
</pre> 

は、私はそれがループに非常に簡単です++ Cで基本的だったが、誰も私を助けてくださいすることができますので、私はまだこのPHPで学ぶことくらいですよ?あなたは、複数の行フィールドを期待している場合は、最初で行うために必要なもの

foreach($_POST as $key=>$value){ 
    echo $value; 
} 
+0

問題は何ですか? – Forbs

+0

あなたは何を達成しようとしていますか?現時点では何が動作しませんか? – ironchicken

+0

これは '$ name [] = $ _POST ['name'];'はあなたがループしていないので、ここで意味をなさない。 '$ name = $ _POST ['name'];'は実行します。とにかく '$ jml'は配列ではありません。あなたがここで何をしようとしているのかははっきりしない! – Jeff

答えて

0

使用foreachループこれは、あなたが簡単に配列をループができる方法でありますフィールド。例:

これは同じ名前で複数のテキスト入力を受け入れ、配列に変換します。

次に、$jml = $_POST['jml'];によって生成されるフィールドの数に依存しているため、これは最初のリクエストでのみ利用可能になります。次回の提出でこれはなくなります。 globalで意味を持たないものを使用する代わりに、サブミットされたテキストフィールドのcountを使用してください。

$name = $_POST['name']; 
$price = $_POST['price']; 
$count = count($name); // get count 

これは、フォームのすべてのフィールドが完了していることに依存しているわけではありません。

その後、そのちょうど基本的な配列指しています。 echo $name[$i]

改訂コード:

<pre> 
<form action='' method='POST'> 
<input type='text' name='jml'> 
<input type='submit' name='submit'> 
</form> 

<form action='' method='POST'> 
<?php 
if(isset($_POST['jml'])){ 
    $jml = $_POST['jml']; 
    for($i=0;$i<$jml;++$i){ 
?> 
    Stuff Name <input type="text" name="name[]">&nbsp 
    Stuff Price <input type='text' name='price[]'><br> 
    <br> 
<?php 
} 
echo "<input type='submit' name='submit2'>"; 
echo "</form>"; 
} 
if(isset($_POST['submit2'])){ 
    $name = $_POST['name']; 
    $price = $_POST['price']; 
    $count = count($name); 
    for($i=0;$i<$count;++$i){ 
     echo $name[$i].' '.$price[$i].'<br>'; 
    } 
} 
?> 
</pre> 
1

、テキストに自分の名前の属性に[]を置く:

+0

こんにちは、これは私がneed.thxたくさん正確に出力されています – faddi

-1

チェックここでは、この

の作業コードhttp://main.xfiddle.com/7ffb488b/stackoverflow/Loopanarraywithform.php

<pre> 
    <?php 
if(isset($_POST['submit'])){ 
    echo "<form action='' method='POST'>"; 
    $jml = intval($_POST['jml']); 
    for($i=0;$i<$jml;++$i){ 
?> 
    Stuff Name <input type="text" name="name[]">&nbsp 
    Stuff Price <input type='text' name='price[]'><br> 
    <br> 
<?php 
} 
echo "<input type='submit' name='submit2'>"; 
echo "</form>"; 
}elseif(isset($_POST['submit2'])){ 
    $name = $_POST['name']; 
    $price = $_POST['price']; 
    // global $jml; 
    $i=0; 
    foreach ($name as $key => $value) { 
     echo $value.' '.$price[$key].'<br/>'; 
     $i++; 
    } 
}else{?> 

<form action='' method='POST'> 
<input type='text' name='jml'> 
<input type='submit' name='submit'> 
</form> 
    <?php 
    } 
?> 
</pre>