2011-06-01 112 views
1

我的工資單處理系統中有這個問題。 在添加數據的區域下面是一張表,其中顯示了添加到薪資表中的數據(empid除外,因爲表中顯示的工資覈算詳細信息必須來自與所選僱員關聯的工資覈算詳細信息)。PHP/SQL問題:來自sql的數據不會顯示

Payroll System image

請參考上面的鏈接看原圖進一步瞭解什麼是寫在下面。

* [A] *是用戶選擇更新哪個員工的工資單細節的地方。選擇的單選按鈕,點擊「更新工資詳細信息」按鈕後,用戶將被帶到更新薪資詳細頁是B.

* [B] *上部是其中用戶輸入的所有與選擇的員工相關的工資覈算詳細信息。一旦用戶點擊保存,數據將被添加到數據庫(支付表),這些細節將顯示在輸入區域下方的表格中。

但是,儘管我的薪水錶中有數據,但它似乎並未顯示在下面的表格中,這就是消息顯示「找不到記錄」的原因。這是我的整個更新工資數據頁面的代碼:

elseif ($_GET["k"]==41) 
{ 
    session_start(); 
    if (isset($_SESSION["uname"])) 
    { 
      $empID=$_POST["empID"]; 
      $aBulan=0; $aPetsa=0; $aTuig=0; $tuigYana=date("Y"); $tuigHadto=$tuigYana-5; 

      $anoBulan=array("January","February","March","April","May","June","July","August","September","October","November","December"); 


      if ($_POST["sButton"]=="Update Payroll Details") 
      { 
        $anoSulod ="Payroll Details<hr>"; 
        $anoSulod.="<form method='post' action='logged.php?k=42'>"; 
        $anoSulod.="<input type='hidden' name='empID' value='".$empID."'>"; 
        $anoSulod.="<table>"; 
        $anoSulod.=" <tr><td>Name of employee : </td><td>".accessDatabase::hinoEmployee($empID)."</td></tr>"; 
        $anoSulod.=" <tr>"; 
        $anoSulod.="   <td>For the month ending : </td>"; 
        $anoSulod.="   <td>"; 

// Kanan month ini dinhi 
        $anoSulod.="     <select name='bBulan'>"; 
        for ($bulan=1; $bulan<=12; $bulan++) 
        { 
         if ($bulan==$aBulan) $anoSulod.="  <option value='".$bulan."' selected>".$anoBulan[$bulan-1]; 
         else $anoSulod.="  <option value='".$bulan."'>".$anoBulan[$bulan-1]; 
        } 
        $anoSulod.="     </select>&nbsp;"; 


// Kanan year ini dinhi 
        $anoSulod.="     <select name='bTuig'>"; 
        for ($tuig=$tuigYana; $tuig>=$tuigHadto; $tuig--) 
        { 
         if ($tuig==$aTuig) $anoSulod.=" <option value='".$tuig."' selected>".$tuig; 
         else $anoSulod.="  <option value='".$tuig."'>".$tuig; 
        } 
        $anoSulod.="     </select>"; 
        $anoSulod.="   </td>"; 
        $anoSulod.=" <tr>"; 
        $anoSulod.=" <tr><td>Basic Salary : PhP</td><td><input type='text' name='bs'></td></tr>"; 
        $anoSulod.=" <tr><td>PERA/ACA : PhP</td><td><input type='text' name='pa'></td></tr>"; 
        $anoSulod.=" <tr><td>PAIC : PhP</td><td><input type='text' name='pc'></td></tr>"; 
        $anoSulod.=" <tr><td>REL : PhP</td><td><input type='text' name='rl'></td></tr>"; 
        $anoSulod.=" <tr><td>GSIS Premium/Loans : PhP</td><td><input type='text' name='gs'></td></tr>"; 
        $anoSulod.=" <tr><td>HDMF Premium/Loans : PhP</td><td><input type='text' name='hd'></td></tr>"; 
        $anoSulod.=" <tr><td>Coop Loans : PhP</td><td><input type='text' name='cl'></td></tr>"; 
        $anoSulod.=" <tr><td>Union Dues : PhP</td><td><input type='text' name='ud'></td></tr>"; 
        $anoSulod.=" <tr><td>Withholding Tax : PhP</td><td><input type='text' name='tx'></td></tr>"; 
        $anoSulod.=" <tr><td colspan='2'><hr></tr>"; 
        $anoSulod.=" <tr><td colspan='2'><input type='submit' value='Save'></tr>"; 
        $anoSulod.=" <tr><td colspan='2'><hr></tr>"; 
        $anoSulod.=" <tr>"; 
        $anoSulod.="  <td colspan='2'>"; 
        $anoSulod.="  <table border='1'>"; 

        $anoSulod.="  <caption>Payroll Details</caption>"; 
        $anoSulod.="  <tr>"; 
        $anoSulod.="  <td>&nbsp;</td>"; 
        $anoSulod.="  <td>Pay period</td>"; 
        $anoSulod.="  <td>Basic Salary</td>"; 
        $anoSulod.="  <td>PERA/ACA</td>"; 
        $anoSulod.="  <td>PAIC</td>"; 
        $anoSulod.="  <td>REL</td>"; 
        $anoSulod.="  <td>GSIS Premium/Loans</td>"; 
        $anoSulod.="  <td>HDMF Premium/Loans</td>"; 
        $anoSulod.="  <td>Coop Loans</td>"; 
        $anoSulod.="  <td>Union Dues</td>"; 
        $anoSulod.="  <td>Withholding Tax</td>"; 
        $anoSulod.="  </tr>"; 

        $k="select b.payID, a.empname, date_format(b.date,'%M %Y') as date, b.bs, b.pa, b.pc, b.rl, b.gs, b.hd, b.cl, b.ud, b.tx, from emp a, pay b where a.empID=b.empID and a.empID=".$empID; 
        $q=mysql_query($k); 
        if (mysql_num_rows($q)>0) 
        { 
         while ($akonRows=mysql_fetch_array($q)) 
         { 
          $anoSulod.=" <tr>"; 
          $anoSulod.="  <td><input type='radio' name='payID' value='".$akonRows["payID"]."'></td>"; 
          $anoSulod.="  <td>".$akonRows["date"]."</td>"; 
          $anoSulod.="  <td>".$akonRows["bs"]."</td>"; 
          $anoSulod.="  <td>".$akonRows["pa"]."</td>"; 
          $anoSulod.="  <td>".$akonRows["pc"]."</td>"; 
          $anoSulod.="  <td>".$akonRows["rl"]."</td>"; 
          $anoSulod.="  <td>".$akonRows["gs"]."</td>"; 
          $anoSulod.="  <td>".$akonRows["hd"]."</td>"; 
          $anoSulod.="  <td>".$akonRows["cl"]."</td>"; 
          $anoSulod.="  <td>".$akonRows["ud"]."</td>"; 
          $anoSulod.="  <td>".$akonRows["tx"]."</td>"; 
          $anoSulod.=" </tr>"; 
         } 
        } 
        else 
        { 
         $anoSulod.=" <tr>"; 
         $anoSulod.="  <td colspan='11' align='center'>No records found</td>"; 
         $anoSulod.=" </tr>"; 
        } 


        $anoSulod.="  </table>"; 

        $anoSulod.="  </td>"; 
        $anoSulod.=" </tr>"; 
        $anoSulod.="</table>"; 
        $anoSulod.="</form>"; 
        $kadamoTD=2; 
      } 


     } 
} 

請幫忙。我真的不知道出了什麼問題。請做...非常感謝!

+0

你應該真的只是在你的db上運行一個查詢(使用phpMyAdmin或者其他任何你喜歡的)來查看爲什麼沒有返回結果。 – 2011-06-01 20:53:09

回答

0

爲每mysql_query添加錯誤檢查。至少可以像撥打電話:

mysql_query($k) or die(mysql_error());

那句話:不要指望PHP函數(例如date_format)將工作 SQL查詢。 (評論說DATE_FORMAT是一個MySQL的功能太)

+0

DATE_FORMAT完美無缺。這是一個MySQL函數http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format – 2011-06-01 20:52:16

+0

date_format *是*一個mysql函數 – dimi 2011-06-01 20:52:25

+0

我做了錯誤檢查mysql_query。以下是我選擇員工並單擊「更新工資詳細信息」按鈕後所說的內容:您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行的'from emp a,pay b where a.empID = b.empID and a.empID = 3'附近使用正確的語法......我不漂亮當然,我明白這意味着什麼。任何想法? – 2011-06-01 21:06:30

0

UPDATE:(刪除我以前的答案,因爲它是不正確)

嘗試打印查詢,並手動運行英寸然後將結果返回到這裏,以便我們可以告訴你更多。

0

該代碼是真正的混亂。在我的頭上,第一個錯誤,我發現:

$empID=$_POST["empID"];

,幾行婁您展示的形式,比提交該表格。該表格上你有

<input type='hidden' name='empID' value='".$empID."'>

我相信你通過$_GET請求結束到該頁面,因爲否則,你可以通過你的其他檢查elseif ($_GET["k"]==41)之一。所以,如果我對了,比你沒有初始$_POST["empID"],所以你的$empID變量將是空的。

一般來說,你爲什麼這麼混淆$_GET$_POST而不是堅持其中之一?

暗示的上述查詢的最簡單的方法之一是呼應$empID或查詢

0

好的,之前刪除逗號FROM - 「b.tx,」應爲「b.tx」

+0

當SELECT,FROM,ORDER BY等都是大寫字母時,讀取查詢的時候會更容易,同時保留表名和列名的小寫字母。並且不需要這樣做:$ empID - 當你使用雙引號時,你可以把變量放在查詢字符串中。 – 2011-06-01 21:18:59

相關問題