0

ユーザーが前のページで送信した情報から動的に作成されたページがあります。たとえば、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>"; 
}
?>   

*編集ページのポイントは、後で個々のセクションのそれぞれに挿入されるすべての値を合計することであるため、すべてを1つの形式にする必要があります。*

* *編集 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;

}

4

2 に答える 2

1

編集:複数のセクションを持つ単一のフォームで、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
});
于 2013-03-05T20:05:18.017 に答える
0

完全に理解しているかどうかはわかりませんが、問題は、ユーザーが特定の値のセット(特定の部門)に対して[送信]ボタンを押すと、すべてのデータが送信されることです。ページ?そして、その特定の領域の入力フィールドのみを送信したいですか?

タグを使用してフォームを分割します。

 <form> </form>

したがって、複数の領域があります。

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

(明らかにこれは擬似コードです。それに応じて調整してください)

于 2013-03-05T19:56:51.247 に答える