ドロップダウン ステータス選択とコメント用のテキスト領域を持つ PHP ページをコーディングしています。現在、送信時にドロップダウン リストとテキスト領域が正しく更新されるようにコーディングする方法を理解するのに苦労しています。
ドロップダウンのデフォルトを、値なしで「---Select Status---」を表示するように設定しました。
私の問題は、ステータスを選択してコメント領域で変更を加えるたびに、ステータスのみが更新され、コメントは同じままです。これを行うためのより効率的な方法があるかどうか疑問に思っていました..
更新: いくつか考えてみました... 4 つのシナリオがあります。
- ステータス変更 / コメント変更
- ステータス変更なし / コメント変更
- ステータス変更 / コメント変更なし
- ステータス変更なし / コメント変更なし
これを常に更新するようにコーディングするにはどうすればよいですか?
ドロップダウンステータス/コメントテキストエリアのコードは次のとおりです。
// this is the function for status dropdown menu
function statusDropdown($case){
print("<b>Status:</b>");
$dropdown = "<select name = 'status'><option selected='selected' value=NULL>--Select Status--</option>";
$connection = getMySqlConnection();
$sql = "SELECT STATUS_ID, STATUS_NAME FROM primary_status_lookup ORDER BY STATUS_ID ASC";
$result = mysql_query($sql, $connection) or die(mysql_error());
while($record=mysql_fetch_array($result)){
$dropdown .= "<option value = '{$record['STATUS_ID']}'> {$record['STATUS_NAME']}</option>";
}
$dropdown .="</select>";
echo $dropdown;
}
//This part incorporates Status dropdown & Comments (text area)
function tableStatus($case) {
$connection = getMySqlConnection();
$sql = "SELECT statistics_status, statistics_comments FROM cases WHERE caseid='".$case."'";
$result = mysql_query($sql, $connection) or die(mysql_error());
if($result!== FALSE){
while ($record = mysql_fetch_row($result)) {
$status=$record[0];
$comments=$record[1];
print("<form><p>");
showStatusComment($case);
statusDropdown($case);
print("<input type=hidden name='case' value='".$case."'/>");
print(" <label><b>Comments:</b><textarea name='comments' cols=70 rows=2 >".$comments."</textarea></label><br/><br/>");
print("<input type='submit' name='submit' value='Submit'/></form>");
}
}
}
データを更新するための私のコードは次のとおりです。
function saveTableStatus($case)
{
//retrieve selected status
if(isset($_REQUEST['status'])) {
$status = $_REQUEST['status'];
}
//retrieve typed comments
if(isset($_REQUEST['comments'])) {
$comments = $_REQUEST['comments'];
}
if($status=='NULL') {
print("<p class='error'>No status selected, please select a status and try again.</p>");
}
else if (($status!=='NULL')){
$connection = getMySqlConnection();
mysql_query("START TRANSACTION", $connection);
$result= mysql_query("Update cases Set statistics_status=".$status.", statistics_comments =".mysql_real_escape_string($comments)." Where caseid='".mysql_real_escape_string($case)."'", $connection);
if($result) {
mysql_query("COMMIT", $connection);
print("<p class='saved'>Table Status Updated!</p>");
} else {
mysql_query("ROLLBACK", $connection);
}
mysql_close($connection);
}
}