2013-03-05 163 views
0

我有一個從用戶在前一頁上提交的信息動態創建的頁面。例如,在第1頁上,用戶輸入一些部門名稱。他們可以進入儘可能多的他們想要的。在第2頁上,爲在第一頁上輸入的每個部門創建了多個部分。在這些部分的每一部分都將是表單,我現在已經設置好了,以便使用變量$ 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; 

} 

+0

創建多種形式然後。每個表格只會提交自己的信息。你可以用'[]'而不是數字來命名這些項目 – UnholyRanger 2013-03-05 19:57:39

回答

1

編輯:如果它的單個表單包含多個部分,並且您不希望在POST後刪除不需要的表單數據,那麼我認爲您必須使用jQuery修剪fo在發佈到服務器之前的rm值,所以請參閱下面的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來獲取包含在特定事業部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 
}); 
+0

你介意在jQuery選項上稍微詳細一點嗎?我認爲這會對我有用,但我仍然不確定如何在PHP腳本中寫入'if(isset($ _ POST ['areaSub $ a'])){}',以便識別$ a變量。 – 2013-03-05 20:44:26

0

我不知道如果我完全理解......但你的問題當用戶點擊ag的「提交」按鈕時,情況就是如此提供一組值(給定的部門),它提交頁面上的所有數據?你只想提交該特定區域的輸入字段?

節了與標籤形式:

<form> </form> 

所以,你有多個方面:

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

(顯然這是僞代碼,相應調整)