形成多个字段数组的Foreach循环

时间:2014-07-13 17:30:45

标签: php arrays foreach

我有一个表单,用户可以添加或删除多个输入,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;等等。因此,它将是一个由用户定义序列的表单,我们需要知道首先创建了哪个字段,以便我们可以按照用户定义的正确顺序显示它们

0 个答案:

没有答案