2011-12-07 10 views
0

のための配列を使用してフォームのjQueryを使用してHTMLフォーム - フィールド

<div class="customer"> 

<input type="text" name="customer" /> 
<input type="text" name="address" /> 
<select name="married"> 
    <option value="0">No</option> 
    <option value="1">Yes</option> 
</select> 

</div> 

を持っている彼らは、フォームに好きなように、ユーザーは、できるだけ多くの顧客を追加することができます。検証とデータベースの目的で、各顧客を分離した状態に保つにはどうすればよいですか?私は配列フィールドの使用は答えだと思っていますが、住所が見つからない、または "結婚"の質問に答えることができないなど、空の値が心配です。

ありがとうございました。その後

<div class="customer"> 
    <input type="text" name="customer[]" /> 
    <input type="text" name="address[]" /> 
    <select name="married[]"> 
    <option value="0">No</option> 
    <option value="1">Yes</option> 
    </select> 
</div> 

をあなたのようなデータ解析することができ、PHPなどのサーバーサイド言語を使用して::

+0

jQueryには非常に優れたvalidate-pluginがあります。あなたの新しいアイテムに 'class =" required "'を必ず入れてください。正しい情報が記入されていないフォームは送信されません。 – OptimusCrime

答えて

2

あなたのケースで、それはこのようになりますので、あなたは、すべての分野に[]を追加する必要があります

$customer = $_REQUEST['customer']; // array holding all customer fields 
$address = $_REQUEST['address']; // array holding all address fields 
$married = $_REQUEST['married']; // array holding all married fields 
+0

パーフェクト。ありがとう – csi

0

これらは私がそれを見つけた私は覚えていないが、私が見つけた既存のプラグインに私の修正です。

あなたはこれを取る場合は、あなたが提出経由であって、単にループ置くのnumberOf入力を取ることができます。たとえば、idのreadrootでdivを作成すると、実際のdivを複製するためにボタンをクリックすると、そこにあるすべての入力が複製されます。 onclick morefields()を使用してボタンを作成すると、divの再生を実行できます。投稿されたデータを収集しているPHPファイルの中で、numberof値を収集してループさせることができます。たとえば、コードは以下のとおりです。

のjQuery:

var counter = 1; 
function morefields() { 
    formClone = $('#readroot').clone(true); 
    $(formClone).css("display", "block"); 
    counter++; 
    $(formClone).attr("name", 'readroot' + counter); 
    $(formClone).attr("id", 'readroot' + counter); 
    $(formClone).find("input, select, textarea").each(function() { 
    var s = $(this).attr("name")+counter; 
    var t = $(this).attr("id")+counter; 
    $(this).attr("name", s); 
    $(this).attr("id", t); 
    }); 
    $("#writeroot").append(formClone); 
    var a = $(formClone).attr("id"); 
    $('#numberof').val(counter); 
} 

PHP:

$number=$_POST['numberof']; 
$num=0; 
while($num <= $number){ 
    $field=($num==0 ? $_POST['field'] : $_POST['field' . $num]); 
    $text=($num==0 ? mysql_real_escape_string($_POST['text']) : mysql_real_escape_string($_POST['text' . $num])); 
    $num++; 
    if ($num==1) { $num=2; } 
} 

これは私にとって素晴らしい作品うまくいけば、これはあなたに少しを助けたり、あなたが行うことができます他に何を示しています!