2011-12-07 33 views
0

有一個表格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> 

使用jQuery,因爲他們喜歡的形式,用戶可以添加儘可能多的客戶。我如何將每個客戶分開以進行驗證和數據庫目的?我相信使用數組字段是答案,但我擔心空值,例如缺少地址或未能回答「已婚」問題。

謝謝。

+0

jQuery有一個很好的驗證插件。只要確保在你的新項目上有'class ='required'',並且它應該阻止任何形式被提交而沒有填寫正確的信息。 – OptimusCrime

回答

2

你將不得不追加[]到所有領域,所以在你的情況下,它看起來就像這樣:

<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服務器端語言可以解析的數據等:

$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

這些是我對現有插件的修改,儘管我不記得我在哪裏找到它。

如果你拿這個,你可以把輸入的數量放在那裏,並簡單地循環提交。例如,你會創建一個ID爲readroot的div,當用戶點擊按鈕來複制實際的div時,每個輸入都會被複制。您可以使用onclick morefields()創建一個按鈕來執行div的複製。然後,在您收集發佈數據的PHP文件內部,您可以收集數值並循環訪問,例如,代碼如下所示。

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

這個偉大的工程,我所以希望這可以幫助你一點或顯示您還有什麼可以做!