2016-10-17 8 views
0

2つの入力を独自のID(i ++とr ++の元のもの)で複製するボタンがあります。フォームを送信して実行すると:入力の重複がある投稿フォーム

foreach ($_POST as $id => $value) { 
    echo $value;    
} 

process.phpページが新しい入力$ idまたは$ valueを認識しません。

重複コードは以下の通りです:

document.getElementById('button').onclick = duplicate 
var i = 0; 
var r = 0; 
var items = document.getElementById('items'); 
var cantidad = document.getElementById('cantidad'); 
function duplicate() { 
var cloneitems = items.cloneNode(false); // "deep" clone 
cloneitems.id = "items" + ++r; // there can only be one element with an ID 
items.parentNode.appendChild(cloneitems); 
var cloneCantidad = cantidad.cloneNode(false); // "deep" clone 
cloneCantidad.id = "cantidad" + ++i; // there can only be one element with an ID 
cantidad.parentNode.appendChild(cloneCantidad); 
} 

私のhtml:

<form method="post" action="process.php" enctype="multipart/form-data"> 
<h4 class="input-margin">Items<button type="button" id="button" onclick="duplicate()" class="btn btn-primary margin-left input-margin">+</button></h4> 
    <div> 
    <div class="input-margin"> 
    <div class="col-xs-12 col-sm-6"> 
    // First duplicated input 
    <select class="input-margin form-control" id="items" placeholder="Nombre" name="item" data-style="btn-primary"> 
     <option></option> 
     <?php while($row = mysqli_fetch_array($itemResults)) : ?> 
     <option><?php echo $row['item']; ?></option> 
     <?php endwhile; ?> 
    </select> 
    </div> 
    <div class="col-xs-12 col-sm-6"> 
    // Second duplicated input 
    <input type="number" class="input-margin form-control txtboxToFilter" id="cantidad" placeholder="Cantidad" name="cantidad" min="1"> 
    </div> 
    </div> 
    </div> 
</div> 
<div class="col-xs-12 col-sm-12 submit-button"> 
    <button type="submit" class="btn btn-primary btn-block" name="submit" value="ingreso">Ingresar</button> 
</div> 
</form> 

ユーザーは、彼らが望む限り多くの重複を使用する可能性を持っている必要があります。それぞれに異なる入力があるので、mysqlで一意のIDを変更する必要があります。

新しいIDが表示されない、または認識されないのはなぜですか?また、重複した入力からすべての値を取得するより良い方法はありますか?

+0

あなたが手にしているhtmlを表示していないので、私たちは手伝ってはいけません。 PHPはJSコードの内容を気にすることができませんでした。フォームが提出されたときにブラウザーがあなたのHTMLをどのように変換するかだけを見ています。 –

+0

jqueryを使うことをお勧めします。使い方が簡単です。 jqueryを使用して、私はあなたのフォームの値を取得し、AJAXの要求を使用してサーバーに送信するために、serializeArrays関数を使用します。 – Nicolas

答えて

1

フォームフィールドは、IDではなく名前で転記されます。したがって、追加された入力はそれぞれ別の入力を上書きします。名前を区別すると、それぞれを取得します。あるいは、これらの入力に名前として配列を与えることができます: name="cantitad[]" そして、すべての値を持つ1つの配列が得られます。

+0

チャームのように働いた!ご協力いただきありがとうございます!名前として配列を与えた後、私はどのようにそれらの値をphpで得ることができますか? –

+0

各配列に対してforeachを使用するだけです。複数の配列を持っている場合は、それらのキーを同期して使用することもできます –

関連する問題