ユーザーが動的に生成される 3 つの非常に長いリストから複数の項目を選択する必要があるフォームがあります。私の解決策は、フィルター可能なリストビューとチェックボックスを使用して、3 つのリストを個別のポップアップに配置することでした。視覚的に機能しており、相互作用は問題ありませんが、チェックボックスのフィールド名の $_POST から何も返されないため、ポップアップ内のチェックボックスの値が送信時に失われているようです。
形:
<form action="processor.php" method="post">
<label for="Title" class="ui-hidden-accessible" >Title:</label>
<input name="Title" id="Title" value="" placeholder="Title" type="text">
<label for="Desc" class="ui-hidden-accessible" >Battle Round Description:</label>
<textarea name="Desc" id="Desc" value="" placeholder="Description (Optional)" ></textarea>
<a href="#AddVol_Pop" data-rel="popup" data-position-to="window" data-role="button" data-transition="pop" >Assign Volunteer(s)</a>
<a href="#AddJudge_Pop" data-rel="popup" data-position-to="window" data-role="button" data-transition="pop" >Assign Judge(s)</a>
<!-- Pop Ups -->
<!-- Volunteers -->
<div data-role="popup" id="AddVol_Pop" data-overlay-theme="a" data-theme="a" style="max-width:500px">
<div data-role="header" >
<h1>Assign Volunteer(s)</h1>
</div>
<div data-role="content" data-theme="a">
<fieldset data-role="controlgroup">
<ul data-role="listview" data-filter="true" data-filter-reveal="true" data-filter-placeholder="Search volunteers..." data-inset="true" data-theme="a">
<?php
$volSet = get_all_users_by_roles(1,2,3,4);
while($row = mysql_fetch_array($volSet)){
echo "<li style=\"padding:0px;\">";
echo "<label for=\"selectVol{$row[UserID]}\">{$row[UserFirstName]} {$row[UserLastName]}</label>";
echo "<input name=\"selectVol[]\" value=\"{$row[UserID]}\" id=\"selectVol{$row[UserID]}\" type=\"checkbox\">";
echo "</li>";
}
?>
</ul>
</fieldset>
<a href="#" data-role="button" data-inline="true" data-rel="back" >Done</a>
<a href="#" data-role="button" data-inline="true" data-rel="back" >Clear</a>
</div>
</div>
<!-- End Volunteers -->
<!-- Judges -->
<div data-role="popup" id="AddJudge_Pop" data-overlay-theme="a" data-theme="a" style="max-width:500px">
<div data-role="header" >
<h1>Assign Judge(s)</h1>
</div>
<div data-role="content" data-theme="a">
<fieldset data-role="controlgroup">
<ul data-role="listview" data-filter="true" data-filter-reveal="true" data-filter-placeholder="Search judges..." data-inset="true" data-theme="a">
<?php
$judgeSet = get_all_users_by_roles(5);
while($row = mysql_fetch_array($judgeSet)){
echo "<li style=\"padding:0px;\">";
echo "<label for=\"selectJudge{$row[UserID]}\">{$row[UserFirstName]} {$row[UserLastName]}</label>";
echo "<input name=\"selectJudge[]\" value=\"selectJudge{$row[UserID]}\" id=\"selectJudge{$row[UserID]}\" type=\"checkbox\">";
echo "</li>";
}
?>
</ul>
</fieldset>
<a href="#" data-role="button" data-inline="true" data-rel="back" >Done</a>
<a href="#" data-role="button" data-inline="true" data-rel="back" >Clear</a>
</div>
</div>
<!-- End Judges -->
<div class="row">
<div class="large-6 columns">
<button type="submit" name="submitNewRound" data-icon="check">Create Round</button>
</div>
<div class="large-6 columns">
<a href="rounds.php" type="button" data-icon="back" >Cancel</a>
</div>
</div>
プロセッサー:
<?php
if (isset($_POST['submitNewRound'])) {
$Title = trim(mysql_prep($_POST['Title']));
$Desc = trim(mysql_prep($_POST['Desc']));
$sql = "INSERT INTO Round (
RndTitle,
RndDesc
) VALUES (
'{$Title}',
'{$Desc}'
)";
$message = "Results: ";
if (mysql_query($sql, $connection)){
$genRnd = mysql_insert_id();
$message .= "Round created sucessfully.";
} else {
$message .= "Creating new Round failed: ";
$message .= mysql_error();
}
foreach($_POST['selectVol'] as $volID){
$sql = "INSERT INTO Round_User (
UserID,
RndID
) VALUES (
'{$volID}',
'{$genRnd}'
)";
if (!mysql_query($sql, $connection)){
$message .= "Inserting RUser for VolID Failed: ";
$message .= mysql_error();
}
}
foreach($_POST['selectJudge'] as $judgeID){
$sql = "INSERT INTO Round_User (
UserID,
RndID
) VALUES (
'{$judgeID}',
'{$genRnd}'
)";
if (!mysql_query($sql, $connection)){
$message .= "Inserting RUser for JudgeID Failed: ";
$message .= mysql_error();
}
}
}
?>
フォーム内の他のすべてが正常に返されるため、エラーはポップアップにあると思います。これらのポップアップで行われた選択がフォーム全体の一部として保持されるようにするにはどうすればよいですか?