2015-07-12 99 views
0

我試圖研究這一個,並且嘗試了一些修復程序,所有這些修復最終都是一團糟。我是新手,並且知道我使用的是PHP的過時版本,但代碼並不是我的工作,但我堅持修復此問題,因爲我將減少錯誤並讓其他人員維護數據,從而受益。我正在改變曾經全是硬編碼選擇框的PHP/MySQL應用程序,我已經創建了一個小的HTML表單,用於在名爲「部門」的表中CRUD一組部門名稱,現在我們跨該站點交叉引用此部分。 mysql'department'表有3個字段department_id,status,department_name直到刷新頁面爲止,MySql數據不會在html表單上顯示

我在更新名爲'staff'的表時遇到問題,它允許在staff表中刪除此數據,但是在表單的頁面加載時它不填充部門名稱,它顯示一個空的選擇框。 「員工」表中的相關字段是staff_company。 我能夠打開一個下拉框,填充所有正確的選項,如果我保持框未觸及並更新表單上的其他數據,它會發布原始正確的department_id,維護數據的完整性並刷新頁面正確的部門名稱顯示。這是一個問題,如果任何人使用它,因爲他們可能認爲該字段是空的,當他們嘗試編輯,並可能做出不正確的選擇,它也是馬虎,我的想法是,我不知道如何早地聲明變量足夠的任何建議在新手談話/初學者談話將不勝感激下面的代碼部分 - 再加上我需要了解我要去哪裏錯了,所以我可以提高我的技能(注意頁面約1600行,因此不張貼整個頁面)。

//editing departments using department id// 
      $select_dept_names = "SELECT * 
       FROM `departments` 
       WHERE status = 'active' 
       ORDER BY department_name ASC ";    
      $run_select_dept = mysql_query($select_dept_names,$link); 

      print(" <tr><td id='employee_left'>Department:</td><td><select name=\"staff_company\"> 
      <option value=\"".$grab_staff['staff_company']."\">".$dept_data['department_name']."</option>"); 

      while($dept_data=mysql_fetch_array($run_select_dept))   
        { 
        print("<option value=\"".$dept_data['department_id']."\">".$dept_data['department_name']."</option>"); 

        }print(" 
        </select></td></tr>"); 

提前感謝 - 乾杯Jase

下面

//line 346 queries  

    $select_dept_names = "SELECT * FROM departments 
         ORDER BY department_name ASC ";  

// line 363 - storing and fetching data 
    $run_select_dept = mysql_query($select_dept_names,$link); 
    $dept_data = mysql_fetch_array($run_select_dept); 


// line 1147 - editing departments using department id///////////NEEDS WORK  Only showing first department then on F5 displays existing department 
      //var_dump($main_report[department]); die(); - outputs only one  line from the 'department' table 
      if($main_report['department'] = $dept_data['department_id']) 
      { 
      print(" <table id='edit_table_within'>Department:</td><td> <select name=\"department\"> 
      <option  value=\"".$main_report['department']."\">".$dept_data['department_name']." </option>"); 
      } 
      else print("<table id='edit_table_within'>Department:</td><td>  <select name=\"department\"> <option value=\"\">Select..</option>"); 

      while($dept_data=mysql_fetch_array($run_select_dept))   
        { 
        print("<option  value=\"".$dept_data['department_id']."\">".$dept_data['department_name']."  </option>"); 

        }print(" 
        </select></td></tr>"); 
+0

沒有錯誤報告?我想至少你會得到未定義的變量'$ dept_data'從你第一次使用它。'status'是一個保留關鍵字嘗試把它反引號。 https://dev.mysql.com/doc/refman/5.5/en/keywords.html – chris85

+0

@ chris85 Nope - 沒有任何錯誤,我也沒有任何狀態問題。 – Jase

+0

但是你有錯誤報告和/或顯示(如果沒有顯示你是否檢查日誌)。嘗試添加檢查錯誤,http://php.net/manual/en/function.mysql-error.php。 – chris85

回答

0

經過相當長的時間摧毀了代碼之後,我發現了一個解決方案,這可能很難看,而且可能有更高效的方法,但這是最後一段適用於我的代碼

//editing departments using department id// 
      $select_o_dept_names = "SELECT * 
       FROM `departments` 
       WHERE department_id = ".$main_report['department']."";    
      $run_select_o_dept = mysql_query($select_o_dept_names,$link); 
      $dept_o_data=mysql_fetch_array($run_select_o_dept); 

      $select_dept_names = "SELECT * 
       FROM `departments` 
       WHERE status = 'active' 
       ORDER BY department_name ASC ";    
      $run_select_dept = mysql_query($select_dept_names,$link); 

      print("<table id='edit_table_within'>Department:</td><td><select name=\"department\"> 
      <option value=\"".$main_report['department']."\">".$dept_o_data['department_name']."</option>"); 

      while($dept_data=mysql_fetch_array($run_select_dept))   
        { 
        print("<option value=\"".$dept_data['department_id']."\">".$dept_data['department_name']."</option>"); 

        }print(" 
        </select></td></tr>"); 
+0

您所做的只是在選擇頂部添加已設置的選項。你錯過了什麼(假設你不想在列表中輸入兩次)是檢查'$ dept_data ['department_id'] == $ main_report ['department']',如果是,添加[selected] (http://www.w3schools.com/tags/att_option_selected.asp)屬性。 – ssnobody

+0

@ssnobody我是這個東西的新手,一直在擴大我的大腦如何獲得關係變量加載頁面第一次加載時,它正在加載刷新(F5),我用var_dump()試圖跟蹤解決問題。直到添加此代碼,我得到一個空白選擇(該變量未聲明)。 ...是的,我不願意在我的選擇下拉列表中列出該項目兩次,但我失敗了,無法使用上面的代碼。如果發佈了一個建議的代碼修復,我不會感到侮辱。非常感謝您的評論。 – Jase

0

更新後的代碼,如果我理解你不夠好(我可能不是),我會建議增加一個peice的的代碼,當您確認數據已添加或更改爲數據庫時,會自動刷新頁面。由於您正在選擇默認選項,因此在下拉框中還有一個空白框。希望我對你的問題有所瞭解

+0

.....很好,我認爲你是在這上面;我想要做的是將「默認選項」設置爲我的數據庫中當前選定的選項,並且我需要通過id引用選項並在選擇框中返回名稱。所以我需要了解如何設置默認選項。 – Jase

+0

我也有錯誤報告,並在這種情況下沒有錯誤....並相信我,我看到很多在我的這段時間工作..... – Jase

+0

沿着回聲的東西'<選項值= \ 「」 [部門標識 ' '\ $ dept_data。'「'; if($ condition == $ whatyoulookingforfor){echo'selected';} echo'>'。$ dept_data ['department_name']。''; – user3669714

相關問題