2016-02-13 62 views
0

我正在研究我的項目的最後一部分,我正在構建網站,在這部分中,我想顯示某個工作的選項(無論該工作仍在進行還是已完成) 我在mysql枚舉值「Completed」,「InProgress」 中給出了我的行,當學生選擇一個工作時,JobStatus將是「InProgress」 ,學生可以在完成JobLists頁面後更改此值,他可以將其更改爲「已完成」。它將在數據庫中更改 ,這是我的代碼試圖在此代碼中顯示更新查詢中的錯誤 JobStatus = '".$_POST['JobStatus']未定義??任何一個可以幫助請傢伙基於數據庫值的選項選擇

<?php 
    //Connect to DB 
include('CIEcon.php'); 

$sqlCommand ="SELECT Accounts.SSU , Jobs.JobName, Jobs.Description, Jobs.DueDate,Jobs.JobId, JobsLists.JobStatus FROM JobsLists,Jobs,Accounts WHERE Accounts.SSU = JobsLists.SSU AND Jobs.JobId = JobsLists.JobId And Accounts.SSU = '".$_SESSION['SSU']."' "; 

$result = mysqli_query($dbCIE,$sqlCommand) or die(mysql_error()); 

echo "<form action='JobsLists.php' method='post'>"; 


while($row = mysqli_fetch_array($result)) 
{ 
echo "<tr>"; 
echo "<td> <input type='checkbox' name='JobId[]' value='". $row['JobId'] ."' /> </td>"; 
echo "<td align=center>" . $row['SSU'] . "</td>"; 
echo "<td align=center>" . $row['JobName'] . "</td>"; 
echo "<td align=center> " . $row['Description'] . "</td>"; 
echo "<td align=center>" . $row['DueDate'] . "</td>"; 
echo "<td align=center>" . 
"<select> 
    <option name = JobStatus[".$row['JobId']."] value='InProgress' selected> In Progress </option> 
    <option name = JobStatus[".$row['JobId']."] value='Completed'   >  Completed </option> 
</select>" . "</td>"; // need to be worked on.. 
echo "</tr>"; 
} 
"</table>"; 

//Connect to DB 
include('CIEcon.php'); 

// save the SSU for the current user to save the sata when insert jobs in jobslist 
$SSU = $_SESSION['SSU']; 
///// 


//handle this when to save a status. 
if(isset($_POST['save'])){ 
    if(empty($_POST['JobId']) || $_POST['JobId'] == 0){ 
     echo"<h4> Status Wasn't Changed.. </h4>"; 
       }else{ 
include('CIEcon.php'); //$dbCIE 
foreach($_POST['JobId'] AS $i){ 
    /// update JobsLists table with the new status.. 
    $sqlUpdate = "UPDATE JobsLists SET JobStatus = '".$_POST['JobStatus'][$i]."' WHERE JobId = '" . $i . "'"; 
    $resultUpdate = mysqli_query($dbCIE,$sqlUpdate) or die(mysqli_error($dbCIE)); 

} 

// TEST ONLY ////////----------------------------------------//////////// 
if (mysqli_affected_rows($dbCIE) > 0) { 
    echo "<h4> You have successfully Saved your statuse </h4>"; 

}else{ echo "<h4> Error occurred </h4> "; } 
////////----------------------------------------//////////// 


       } // end of else, when user select something.. 
      } 


?> 

回答

1

那是因爲你還沒有命名,你試圖用.. HTML <option> S發送值沒有名稱的選擇框,但只有一個值。它是這個值,它是在$_POST

while($row = mysqli_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td> <input type='checkbox' name='JobId[]' value='". $row['JobId'] ."' /> </td>"; 
    echo "<td align=center>" . $row['SSU'] . "</td>"; 
    echo "<td align=center>" . $row['JobName'] . "</td>"; 
    echo "<td align=center> " . $row['Description'] . "</td>"; 
    echo "<td align=center>" . $row['DueDate'] . "</td>"; 
    echo "<td align=center>" . 
    echo "<select name='JobStatus[".$row['JobId']."]'>"; 
     if($row['JobStatus'] == "InProgress"){ 
      echo "<option value='InProgress' selected>In Progress</option>"; 
      echo "<option value='Completed'>Completed</option>"; 
     } else { 
      echo "<option value='InProgress'>In Progress</option>"; 
      echo "<option value='Completed' selected> Completed </option>"; 

     } 

    echo "</select>" . "</td>"; // need to be worked on.. 
    echo "</tr>"; 
    } 
    "</table>"; 
+0

分配給<select>的名字怎麼你的意思是默認值? –

+0

謝謝你,先生,但是當我選擇「完成」並刷新頁面時,我想選擇保持「完成」。你知道我該怎麼做嗎? – mas5643

+0

關於默認值,這一切都很好。我修好了它。 – mas5643