佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 981|回复: 2

PHP问题询问。

[复制链接]
发表于 1-11-2012 10:24 AM | 显示全部楼层 |阅读模式
  1. <tr>
  2. <td>Your Name: </td>
  3. <td><input type="text" name="staffName" id="staffName" onFocus="getleave()">
  4. </td>
  5. </tr>

  6. <script language="Javascript">
  7. $().ready(function() {
  8.         $("#staffName").autocomplete("staffauto.php", {
  9.                 width: 260,
  10.                 matchContains: true,
  11.                 //mustMatch: true,
  12.                 //minChars: 0,
  13.                 //multiple: true,
  14.                 //highlight: false,
  15.                 //multipleSeparator: ",",
  16.                 selectFirst: false
  17.         });
  18. });
  19. </script>
复制代码
  1. <script language="Javascript">
  2. var xmlHttp;
  3. function GetXmlHttpObject(){
  4.    
  5.     var xmlHttp=null;
  6.     try {
  7.         
  8.      // Firefox, Opera 8.0+, Safari
  9.      xmlHttp=new XMLHttpRequest();
  10.      } catch (e) {
  11.          
  12.      //Internet Explorer
  13.         try {
  14.         
  15.             xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  16.         } catch (e) {
  17.         
  18.             xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  19.         }
  20.      }
  21.     return xmlHttp;
  22. }

  23. function getleave(){
  24.        
  25.     xmlHttp=GetXmlHttpObject();
  26.     if(xmlHttp==null) {
  27.         
  28.         alert ("Browser does not support HTTP Request");
  29.         return;
  30.     }
  31.     var name=document.getElementById("staffName");
  32.     var url="getleave.php?";
  33.     var n="value="+name.value;
  34.     xmlHttp.onreadystatechange=stateChanged;
  35.     xmlHttp.open("POST",url,true);
  36.     xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  37.     xmlHttp.send(n);

  38. function stateChanged() {
  39.    
  40.     if (xmlHttp.readyState=="5" || xmlHttp.readyState=="200"){
  41.    
  42.         var str_text=xmlHttp.responseText;
  43.         if (str_text != ""){
  44.             //alert("没有这个名字的数据");
  45.                         //}
  46.         //else {
  47.             
  48.             str_text = str_text.split('|');
  49.                        
  50.             document.getElementById("cAnnual").value = str_text[0];
  51.                         document.getElementById("cEmergency").value = str_text[1];
  52.                         document.getElementById("cMedical").value = str_text[2];
  53.         }
  54.                 }
  55.     }
  56. }
  57. </script>

  58. <tr>
  59. <td>Remaining Leave: </td>
  60. <td><input type="text" name="cAnnual" ID="cAnnual" size="25" readonly></td>
  61. <td><input type="text" name="cEmergency" ID="cEmergency" size="25" readonly></td>
  62. <td><input type="text" name="cMedical" ID="cMedical" size="25" readonly></td>
  63. </tr>
复制代码
getleave.php
  1. <?php
  2. include("connect.php");

  3. if (isset($_POST['value']) && $_POST['value'] != "") {

  4.         $q = $_POST['value'];
  5.    
  6.         $query = "SELECT * FROM tblleavetype WHERE staffName = '".$q."'";
  7.         $result = $db->query($query);
  8.         $row = $result->fetch_array();
  9.        
  10.         $cAnnual = $row['cAnnual'];
  11.         $cEmergency = $row['cEmergency'];
  12.         $cMedical        = $row['cMedical'];
  13.        
  14.        

  15.         $arr = array(
  16.     $q =>array(
  17.                 'cAnnual'=>$cAnnual,
  18.                 'cEmergency'=>$cEmergency,
  19.                 'cMedical'=>$cMedical,
  20.     ),
  21.         );
  22.        
  23.        
  24.     foreach($arr as $k=>$v) {
  25.         
  26.         if ($k == trim($q)) {
  27.                         echo $v['cAnnual'] . '|'. $v['cEmergency'] .'|'. $v['cMedical'];
  28.         }
  29.     }
  30. }
  31. ?>
复制代码
当我输入staffname的时候,他不会pop out我set在tblleavetype的资料。
请各位帮我看看哪里出了问题。


回复

使用道具 举报


ADVERTISEMENT

发表于 1-11-2012 11:43 AM | 显示全部楼层
有許多 php 的教學會用 html 混合 php code
除非是很固定的網頁,否則個人不太建議用這樣的方法。

你可以考慮用 echo 在不同階段把數字顯示出來,比較容易除錯。

例如基本不會變的 login.php :

  1. <form method=post action=loginChk.php>
  2. <br><br>

  3. <table align=center border=1 cellspacing=0 cellpadding=03>
  4.         <tr valign=middle>
  5.                 <th colspan=100 valign=middle height=50>
  6.                 <INPUT TYPE='image' SRC='images/key.png'> Login
  7.                 </th>
  8.         </tr>
  9.         <tr>
  10.                 <td> User Id </td>

  11.                 <td>
  12.                 <INPUT TYPE='text' NAME='User'>
  13.                 </td>
  14.         </tr>

  15.         <tr>
  16.                 <td> Password </td>
  17.                 <td> <INPUT TYPE='password' NAME='Pwd'> </td>
  18.         </tr>

  19.         <tr>
  20.                 <td colspan=100 align=center><br>
  21.                 <INPUT TYPE='submit' class='button' value='Login'>
  22.                 </td>
  23.         </tr>
  24. </table>

  25. </form>

  26. <table align=center border=0 cellspacing=0 cellpadding=03>
  27.         <tr>
  28.                 <td>
  29.                 <A href='pwrecovery.php'>Forgot password</a>
  30.                 </td>
  31.         </tr>
  32. </table>
复制代码
除了即時動態的部分,
如果沒必要也不太建議用 javascript 來存取 http 的資料,這些全部在 server site 都可以預先處理。

而如果比較多 dynamic data 用這樣可能比較容易看:

  1. echo '<table border=1 cellpedding=0 cellspacing=0>';
  2. echo '<tr><th>Date</th>';
  3. echo '<th>Name</th>';
  4. echo '<th>In</th>';
  5. echo '<th>Out</th>';

  6. foreach($records as $date => $val ) {
  7.         echo '<tr><td>';
  8.         echo $date . ' ';

  9.         echo substr( date( 'l', strtotime( $date ) ), 0, 3 );
  10.         echo '</td>';
  11.         foreach( $val as $emp => $row ) {
  12.                 echo '<tr><td></td>';
  13.                 echo '<td>';
  14.                 echo $emp;
  15.                 echo '</td>';

  16.                 echo '<td>';
  17.                 echo $row['In'];
  18.                 echo '</td>';

  19.                 echo '<td>';
  20.                 echo $row['Out'];
  21.                 echo '</td>';
  22.                 echo '</tr>';
  23.         }
  24.         echo '</tr>';
  25. }
  26. echo '<table>';
复制代码
回复

使用道具 举报

发表于 1-11-2012 03:39 PM | 显示全部楼层
从你的 input 那边,只有在 onFocus 的时候才会跑 getleave()。如果你要在输入的时候跑,应该是用 onkeyup 吧?

但是在下面你有这行 $('#staffName').autocomplete("staffauto.php", ...),这个是 jQuery 的 autocomplete plugin 吧?有这个为什么还要 GetXmlHttpObject() 呢?还有 staffauto.php 有时做什么的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 11-10-2025 02:23 PM , Processed in 0.193907 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表