簡體   English   中英

發布表單值,其中從循環中動態創建字段名稱?

[英]Post form values where Field Names are dynamically created from a loop?

我有一個頁面是根據用戶在上一頁上提交的信息動態創建的。 例如在第1頁上,用戶輸入一些部門名稱。 他們可以輸入任意多個。 在第2頁上,為在第1頁上輸入的每個部門創建多個部分。 在這些部分的每一個內部都將是表單,目前,我已對其進行了設置,以便使用變量$ a創建表單的名稱。 單擊每個部分中的“提交”按鈕后,我需要知道如何發布這些項目。 我嘗試了幾種不同的方法,但沒有任何效果。 我想要這樣,以便僅發布與提交按鈕的$ a具有相同$ a值的項目。

    $departmentSql = "SELECT * FROM b_departments WHERE loc_id='$locid' AND b_id =     '$bid'";
    $departmentResults = mysql_query($departmentSql,$con);

$a = 0;

while ($departmentRow = mysql_fetch_array($departmentResults)) {

$department = $departmentRow['b_dep_name'];
$departmentID = $departmentRow['dep_id'];
$b_departmentID = $departmentRow['b_dep_id'];
$a++;

echo "

<div id=depDiv>
<div id=depDivHeader>
".$department."
</div>
";

$areaSql = "SELECT * from areas WHERE dep_id = $departmentID ORDER BY area_name ASC";
$areaSqlResult = mysql_query($areaSql);
?>

<br />
<input type="hidden" name="bdep<?php echo $a;?>" value="<?php echo $b_departmentID; ?>" />
Add Area: 
<select name="dep_area<?php echo $a;?>" type="menu">
    <option value=""></option>
    <?php while($areaRows=mysql_fetch_assoc($areaSqlResult)){?>
    <option value="<?php echo "".$areaRows['area_id'].",".$areaRows['area_name']."" ?>"><?    php echo $areaRows[       'area_name'] ?></option>
<?php }
?>
</select>
&nbsp;&nbsp;
<input type="submit" name="areaSub<?php echo $a;?>" value="Add" />

<?php
echo "</div>"; 
}
?>   

* 編輯我需要所有內容都采用一種形式,因為頁面的重點是將所有稍后將插入各個部分的值相加。 *

* *編輯2:

我使用@dirt的jquery建議弄清楚了。

HTML:

$departmentSql = "SELECT * FROM b_departments WHERE loc_id='$locid' AND b_id = '$bid'";
$departmentResults = mysql_query($departmentSql,$con);

$a = 0;

while ($departmentRow = mysql_fetch_array($departmentResults)) {

$department = $departmentRow['b_dep_name'];
$departmentID = $departmentRow['dep_id'];
$b_departmentID = $departmentRow['b_dep_id'];
$a++;

echo "

<div id=depDiv>
<div id=depDivHeader>
".$department."
</div>
<div id=$a>
";

$areaSql = "SELECT * from areas WHERE dep_id = $departmentID ORDER BY area_name ASC";
$areaSqlResult = mysql_query($areaSql);
?>

<br />
<input type="hidden" name="bdep<?php echo $a ?>" value="<?php echo $b_departmentID; ?>" />
Add Area: 
<select name="dep_area<?php echo $a ?>" type="menu">
    <option value=""></option>
    <?php while($areaRows=mysql_fetch_assoc($areaSqlResult)){?>
    <option value="<?php echo "".$areaRows['area_id'].",".$areaRows['area_name']."" ?>"><?    php echo $areaRows[       'area_name'] ?></option>
<?php }
?>
</select>
&nbsp;&nbsp;
<button type="submit" name="areaSub" value="<?php echo $a ?>" />Add</button>

<?php
echo "</div></div>"; 
} ?>

jQuery的:

<script>
$(document).ready(function() {
    $('#<?php echo $a ?>').submit(function() {
        .post("include/action.php")
    }); 
});
</script>

PHP:

if(isset($_POST['areaSub'])) {

$areaval = intval($_POST['areaSub']);   



$area = mysql_real_escape_string($_POST["dep_area".$areaval.""]);
list($area_id, $area_name) = explode(',', $area, 2);
$bdep = mysql_real_escape_string($_POST["bdep".$areaval.""]); 

echo $areaval;
echo $area_name;
echo $bdep;

}

編輯:如果它是一個具有多個部分的表單,並且您不想在POST之后修剪掉多余的表單數據,那么我認為您必須在發布到服務器之前使用jQuery修剪表單值,因此請參閱我的jQuery部分下面的示例演示了如何只發布所選按鈕的數據。

簡短的答案是使用提交按鈕名稱/值屬性,並在發布后對其進行評估。 具有相同名稱的多個按鈕可以具有不同的值,並且這些值不必是標簽。

例:

<form id='<?php echo $a; ?>'>
    <input type='text' name='in1'>
    <input type='text' name='in2'>
    <button type='submit' name='submit' value='<?php echo $a; ?>'>Add</button>
</form>
...
<form id='<?php echo $a; ?>'>
    <input type='text' name='in1'>
    <input type='text' name='in2'>
    <button type='submit' name='submit' value='<?php echo $a; ?>'>Add</button>
</form>
...
<?php
    # _POST:
    if (isset($_POST['submit']) && $_POST['submit'] == '1') {
        echo 'Department 1';
    }
    if (isset($_POST['submit']) && $_POST['submit'] == '2') {
        echo 'Department 2';
    }
?>

您也可以使用jQuery獲取某個Div ID中包含的所有元素。 有點像(這是一個粗略的主意):

<div id='<?php echo $a; ?>'>

    <input type='text' name='in1'>
    <input type='text' name='in2'>

    <input type="submit" name="areaSub<?php echo $a;?>" value="Add" />
</div>

jQuery的:

$('#<?php echo $a; ?>').submit(function() {
    do_something_with_form_$a
});

我不確定我是否能完全理解...,但是您遇到的問題是,當用戶點擊給定值(給定部門)的“提交”按鈕時,它將提交所有數據。這一頁? 您只希望提交該特定區域的輸入字段?

用標簽截取表格:

 <form> </form>

因此,您將擁有多個領域:

 while(...) {
    <form method="..." name="form $a">
       <input name="... $a">
       <input name="... $a">
        ...
       <submit>
   </form>
}

(顯然這是偽代碼,請相應地進行調整)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM