2011-06-01 82 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