我有一个表单,用户可以添加或删除多个输入,textarea,选择它。
以下是代码:
<?php if ($buildtemplateexist>0) {?>
<?php $rowNum=0; while ($buildtemplate=mysql_fetch_array($buildtemplatequery)){ $rowNum++; ?>
<?php $bttid=$buildtemplate['CaseTemplateID']; $btstepname=$buildtemplate['StepName']; $btnote=$buildtemplate['Note']; $btmonth=$buildtemplate['Month']; $btday=$buildtemplate['Day']; $btlabel=$buildtemplate['Label']; $bttext=$buildtemplate['Text']; ?>
<?php if (!empty($btstepname)) { ?>
<div style="margin: 20px 0px; border-bottom: 1 solid #ccc; line-height: 40px;" id="form<?php echo $fid; ?>rowNumStep<?php echo $rowNum.''.$fid; ?>">Step Name/Number: <input type="text" name="stepname[]" size="30" value="<?php echo $btstepname; ?>"> Step Duration: <select name="stepmonth[]" id="sch_hour"><?php for ($y=0; $y<13; $y++) { echo "<option value='$y'"; if ($btmonth==$y) { echo " selected"; } echo ">$y</option>"; } ?></select> Month and <select name="stepday[]" id="sch_hour"><?php for ($r=0; $r<30; $r++) { echo "<option value='$r'"; if ($btday==$r) { echo " selected"; } echo ">$r</option>"; } ?></select> Days<input type="button" value="Remove" onclick="removeStep<?php echo $fid; ?>(<?php echo $rowNum.''.$fid; ?>);"></div>
<?php } ?>
<?php if (!empty($btnote)) { ?>
<div style="margin: 20px 0px;" id="form<?php echo $fid; ?>rowNumTextbox<?php echo $rowNum.''.$fid; ?>"><div class="activity-description-sentence activity-details-toggle-group-in-list"><p>Note: <input type="button" value="Remove" onclick="removeTextbox<?php echo $fid; ?>(<?php echo $rowNum.''.$fid; ?>);"></p><div class="feed-note textarea"><textarea name="note[]" id="input_box" class="confirm-cancel autogrowEnabled">Please type your note here ...</textarea></div></div></div>
<?php } ?>
<?php if (!empty($btlabel)||!empty($bttext)) { ?>
<div style="margin: 20px 0px;" id="form<?php echo $fid; ?>rowNumInput<?php echo $rowNum.''.$fid; ?>">Tag Name: <input type="text" name="label[]" size="15" value=""> Tag Description: <input type="text" name="text[]" value="" size="50"> <input type="button" value="Remove" onclick="removeInput<?php echo $fid; ?>(<?php echo $rowNum.''.$fid; ?>);"></div>
<?php } ?>
<?php } ?>
<?php }else{ ?>
<div style="margin: 20px 0px; border-bottom: 1 solid #ccc; line-height: 40px;" id="form<?php echo $fid; ?>rowNumStep<?php echo $rowNum.''.$fid; ?>">Step Name/Number: <input type="text" name="stepname[]" size="30"> Step Duration: <select name="stepmonth[]" id="sch_hour"><?php for ($y=0; $y<13; $y++) { echo "<option value='$y'>$y</option>"; } ?></select> Month and <select name="stepday[]" id="sch_hour"><?php for ($r=0; $r<30; $r++) { echo "<option value='$r'>$r</option>"; } ?></select> Days</div>
<?php } ?>
所以我使用serializeArray()
将它传递给我的php处理器。
这是php处理器:
$i=1;
mysql_query("DELETE FROM TemplateDetails WHERE CaseTemplateID='".$_POST['template']."'");
$today = date('Y-m-j');
$output=array();
foreach ($_POST['stepname'] as $key => $value) {
if (mysql_query("INSERT INTO TemplateDetails (CaseTemplateID, StepName, Month, Day, Date, SortField)
VALUES ('".$_POST['template']."','".$value."','".$_POST['stepmonth'][$key]."','".$_POST['stepday'][$key]."','".$today."','".$i."')")) {
$i++;
$newArray=$_POST['stepname'];
$newCount=count($newArray);
for ($s=0; $s < $newCount; $s++) {
if () {
mysql_query("INSERT INTO TemplateDetails (CaseTemplateID, Note, Date, SortField)
VALUES ('".$_POST['template']."','".$_POST['note'][$key]."','".$today."','".$i."')");
$i++;
}
if (preg_match('/label/', $key)){
mysql_query("INSERT INTO TemplateDetails (CaseTemplateID, Label, Text, Date, SortField)
VALUES ('".$_POST['template']."','".$_POST['label'][$key]."','".$_POST['text'][$key]."','".$today."','".$i."')");
$i++;
}
}
return true;
} else {
return false;
}
}
主要问题是如何按顺序放置字段。我在我的数据库中使用SortField。但我无法访问数组中正确的项目序列。
正确的顺序是用户放置的,例如,第一个字段是&#34;步骤&#34;在它下面,可以有几个&#34;标签&#34;或&#34;注意&#34;在它之后它可以有另一个&#34;步骤&#34;等等。因此,它将是一个由用户定义序列的表单,我们需要知道首先创建了哪个字段,以便我们可以按照用户定义的正确顺序显示它们