顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


文章 - jslin

頁: [1]
1
已能顯示出 "銷售合計" 那如果還要依照付款方式, 各別統計出
現金小計 跟 信用卡小計 (如圖檔顯示)
以下語法應該如何去判斷 $row['付款方式']  ??
  謝謝 !!

/* Show Field name */
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ){
     
        if (++$i == 1) { // 第一筆資料顯示欄位名稱
                echo "<tr>"; 
                foreach (array_keys($row) as $val) {
                        echo "<td>".$val."</td>";
                }
                echo "</tr>". "\n" ;         
        }

        echo "<tr>";
     
        foreach ($row as $val) {
                echo "<td>".$val."</td>";
        }
        echo "</tr>". "\n" ;
      // $sumDEA040 = $sumDEA040 + $row['標準售價'];
      $sumTB033 = $sumTB033 + $row['銷售合計'];
                           
}
// echo "標準售價:" . $sumDEA040;

echo "(銷售合計)=>" ."<font color=red>".$sumTB033 ."元" ."</font>" ."</tr>" ."<br />" ."\n";
echo "(現金小計)=>" ."<font color=red>"."元" ."</font>" ."</tr>" ."<br />" ."\n";
echo "(信用卡小計)=>" ."<font color=red>"."元" ."</font>" ."</tr>" ."<br />" ."\n";

2
$name=1 變數 $name=1 這應該沒問題
$$name=1 是指以 $name 的值當做變數 所以其實是 $1=1
--
不然就是

$a=array()
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ){
//取出收銀員名字放到 array
if(!isset($$name)){
$a[$row['salesname']]=0;
}
//++ 應該就不用說了吧
$a[$row['salesname']]+=1;

}
用陣列去 ++ 也可以

OK 非常感謝

能否再另外請教... 已能顯示出 "銷售合計" 那如果還要依照付款方式, 各別統計出
現金小計 跟 信用卡小計 (如圖檔顯示)
以下語法應該如何去判斷 $row['付款方式'] 金額合計   謝謝 !!

/* Show Field name */
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ){
      
        if (++$i == 1) { // 第一筆資料顯示欄位名稱
                echo "<tr>"; 
                foreach (array_keys($row) as $val) {
                        echo "<td>".$val."</td>";
                }
                echo "</tr>". "\n" ;          
        }

        echo "<tr>";
      
        foreach ($row as $val) {
                echo "<td>".$val."</td>";
        }
        echo "</tr>". "\n" ;
      // $sumDEA040 = $sumDEA040 + $row['標準售價'];
      $sumTB033 = $sumTB033 + $row['銷售合計'];
                            
}
// echo "標準售價:" . $sumDEA040;

echo "(銷售合計)=>" ."<font color=red>".$sumTB033 ."元" ."</font>" ."</tr>" ."<br />" ."\n";
echo "(現金小計)=>" ."<font color=red>"."元" ."</font>" ."</tr>" ."<br />" ."\n";
echo "(信用卡小計)=>" ."<font color=red>"."元" ."</font>" ."</tr>" ."<br />" ."\n";

3
$a='黃穗婷';
echo "(黃穗婷)=>" . "<font color=red>" .$$a ."" ."</font>" ."</tr>". "\n";

--
試過你就了解了

真的很萬分感謝 micmic3 先進不吝惜指點迷津.
我這裡比較不解是 $$a 出來筆數值..., 是如何去 $$name 拿到,
因為我們前面定義的 ....
$name=$row['收銀員'];
        if(!isset($$name)){
           $$name=0;
           }
           $$name++;

似乎跟 $$a 沒有關係樣子.... ?? 是如何把 $row['收銀員'] 挑選出來數據資料讓  $$a 穫得 ....??

另外,  如何讓沒有符合條件資料自動顯示為 0
$a='黃穗婷';
echo "(黃穗婷)=>" . "<font color=red>" .$$a ."" ."</font>" ."</tr>". "\n";

譬如說 : 以交易日期條件查出資料, 當天沒有"黃穗婷" 這一個收銀員
要讓顯示為 (黃穗婷)=> 0

謝謝

4
解釋一下好了

while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ){
//取出收銀員名字放到 name
$name=$row['salesname'];
//$$name 的意思是 把 $name 宣告成變數 =0 isset 是如果變數存在
if(!isset($$name)){
$$name=0;
}
//++ 應該就不用說了吧
$$name++;


}

這樣可以算出每個人出現的次數

不好意思, 依照先進提供語法, 跑出來是全部計算出來筆數 10筆
//取出收銀員名字放到 name
$row 變數對應欄位名, 我試著使用$row['MU002']; 或是使用$row['收銀員'];
都是一樣結果....  10筆, 而不是顯示出個別統計筆數 黃穗婷:3 王永靜:2 陳世珊:5

我這裡提供一下我的語法如下 :  是否那裡出現問題 ?? .... 不好意思, 再麻煩指點一下 謝謝~~
/* Show Field name */
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ) {
      
        if (++$i == 1) { // 第一筆資料顯示欄位名稱
                echo "<tr>";
                foreach (array_keys($row) as $val) {
                        echo "<td>".$val."</td>";
                }
                echo "</tr>". "\n" ;
        }

        echo "<tr>";
        foreach ($row as $val) {
                echo "<td>".$val."</td>";
        }
        echo "</tr>". "\n" ;
      $sumTC009 = $sumTC009 + $row['銷售付款金額'];
      $sumTA029 = $sumTA029 + $row['總折價金額'];
      
        $name=$row['收銀員'];
        if(!isset($$name)){
           $$name=0;
           }
           $$name++;
         
}
// echo "(銷售合計)=>" . "<font color=#ff0000>" .$sumTB033 ."元" ."</font>" ."</tr>". "\n";
echo "(銷售付款金額合計)=>" ."<font color=red>" .$sumTC009 . "元" ."</font>" ."</tr>". "\n";
echo "(總折價金額合計)=>" ."<font color=red>" .$sumTA029 . "元" ."</font>" ."</tr>". "\n";
echo "(黃穗婷)=>" . "<font color=red>" .$$name ."" ."</font>" ."</tr>". "\n";


先進您好, Sorry...我更正我跑出結果...
會是以最後一筆"收銀員" 為 Key 去計算筆數
我目前語法 :
$name=$row['收銀員'];
        if(!isset($$name)){
           $$name=0;
           }
           $$name++;

這樣是秀出 : 5 而不是原先我說的全部筆數 10
這樣應該如何修正語法, 可以顯示出 黃穗婷:3 王永靜:2 陳世珊:5

謝謝 !!

5
解釋一下好了

while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ){
//取出收銀員名字放到 name
$name=$row['salesname'];
//$$name 的意思是 把 $name 宣告成變數 =0 isset 是如果變數存在
if(!isset($$name)){
$$name=0;
}
//++ 應該就不用說了吧
$$name++;


}

這樣可以算出每個人出現的次數

不好意思, 依照先進提供語法, 跑出來是全部計算出來筆數 10筆
//取出收銀員名字放到 name
$row 變數對應欄位名, 我試著使用$row['MU002']; 或是使用$row['收銀員'];
都是一樣結果....  10筆, 而不是顯示出個別統計筆數 黃穗婷:3 王永靜:2 陳世珊:5

我這裡提供一下我的語法如下 :  是否那裡出現問題 ?? .... 不好意思, 再麻煩指點一下 謝謝~~
/* Show Field name */
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ) {
      
        if (++$i == 1) { // 第一筆資料顯示欄位名稱
                echo "<tr>";
                foreach (array_keys($row) as $val) {
                        echo "<td>".$val."</td>";
                }
                echo "</tr>". "\n" ;
        }

        echo "<tr>";
        foreach ($row as $val) {
                echo "<td>".$val."</td>";
        }
        echo "</tr>". "\n" ;
      $sumTC009 = $sumTC009 + $row['銷售付款金額'];
      $sumTA029 = $sumTA029 + $row['總折價金額'];
      
        $name=$row['收銀員'];
        if(!isset($$name)){
           $$name=0;
           }
           $$name++;
         
}
// echo "(銷售合計)=>" . "<font color=#ff0000>" .$sumTB033 ."元" ."</font>" ."</tr>". "\n";
echo "(銷售付款金額合計)=>" ."<font color=red>" .$sumTC009 . "元" ."</font>" ."</tr>". "\n";
echo "(總折價金額合計)=>" ."<font color=red>" .$sumTA029 . "元" ."</font>" ."</tr>". "\n";
echo "(黃穗婷)=>" . "<font color=red>" .$$name ."" ."</font>" ."</tr>". "\n";

6
if(!isset($$name)){
$$name=0;
}
$$name++;

Best regards!

非常謝謝 指點... 因為新手者, 是否可以更完整說明
附上自己目前程式碼...

while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ){


        if (++$i == 1) { // 第一筆資料顯示欄位名稱
                echo "<tr>"; 
                foreach (array_keys($row) as $val) {
                        echo "<td>".$val."</td>";
                }
                echo "</tr>". "\n" ;          
        }

        echo "<tr>";
      
        foreach ($row as $val) {
                echo "<td>".$val."</td>";
        }
        echo "</tr>". "\n" ;
      
      $sumTB033 = $sumTB033 + $row['銷售合計'];
                   
}
echo "(銷售合計)=>" . "<font color=red>".$sumTB033 ."元" ."</font>" ."</tr>". "\n";

while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ){
$name=$row['salesname'];
if(!isset($$name)){
$$name=0;
}
$$name++;

}

micmic3 先進您好 !! 首先非常感謝不吝惜指點....
按照給我的語法... 出現結果是有顯示出最後一筆收銀員名字,
但是, 不好意思, 我這裡希望是能把以交易日期顯示結果, 秀出收銀員出現筆數
類如圖示所表示收銀員的欄位資料 黃穗婷有三筆, 王永靜有二筆, 陳世珊有五筆
就會在上面出現 黃穗婷:3 王永靜:2 陳世珊:5

7
if(!isset($$name)){
$$name=0;
}
$$name++;

Best regards!

非常謝謝 指點... 因為新手者, 是否可以更完整說明
附上自己目前程式碼...

while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ){


        if (++$i == 1) { // 第一筆資料顯示欄位名稱
                echo "<tr>"; 
                foreach (array_keys($row) as $val) {
                        echo "<td>".$val."</td>";
                }
                echo "</tr>". "\n" ;          
        }

        echo "<tr>";
      
        foreach ($row as $val) {
                echo "<td>".$val."</td>";
        }
        echo "</tr>". "\n" ;
      
      $sumTB033 = $sumTB033 + $row['銷售合計'];
                   
}
echo "(銷售合計)=>" . "<font color=red>".$sumTB033 ."元" ."</font>" ."</tr>". "\n";

8
是否可以從
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) )
符合交易日期條件後, 個別計算出 收銀員 名字出現次數....
如以下圖示 :
顯示在 (總折價金額合計)=>625元 後面 黃穗婷 : 1 王永靜 : 2 陳世珊 : 4

9
是否可以從
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) )
符合交易日期條件後, 個別計算出 收銀員 名字出現次數....
如以下圖示 :
顯示在 (總折價金額合計)=>625元 後面 黃穗婷 : 1  王永靜 : 2  陳世珊 : 4


10
新增一個變數,例如 $total

然後 $total += $sumTB033;

然後 echo $total;

這樣

謝謝
我運用 $sumTB033 = $sumTB033 + $row['銷售合計'];

但把 echo $sumTB033 拉出迴圈就好
全部運算完 再echo

11
各位先進請教...
因為顯示出'銷售合計'每一筆相加值 250 1249 1539 1539 (如以下圖檔SK01.jpg所示)

但是, 我希望上面"銷售合計"是顯示這四筆最後加總結果, 而不是這四筆的每一筆累加結果都顯示出來
(除了原顯示共計有:4筆, 再加上顯示出 銷售合計:1539)

謝謝 ~~~
 

也附上我目前語法 :

/* Show Field name */
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ){


if (++$i == 1) { // 第一筆資料顯示欄位名稱
echo "<tr>";
foreach (array_keys($row) as $val) {
echo "<td>".$val."</td>";
}
echo "</tr>". "\n" ;

}

echo "<tr>";


foreach ($row as $val) {
echo "<td>".$val."</td>";
}
echo "</tr>". "\n" ;
$sumTB033 = $sumTB033 + $row['銷售合計'];
echo "銷售合計:" . $sumTB033;

}

12
php sqlsrv後續並無更新開發,而連結上,於nvarchar部分還是有問題。(連接2005/2008)

目前使用win32 ODBC或JDBC(by tomcat)中介,輸出的資料是正常的。

欄位部分,個人用一個loop把欄位fill回recordset,使原來的陣列

從原始的 $mAado[$mNnumA][$mNnumB]

擴增 $mAado[$mNnumA]['sColName']

ok 已經有範例語法 可以了 !! 謝謝
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC ) ) {
if (++$i == 1) { // 第一筆資料顯示欄位名稱
echo "<tr>";
foreach (array_keys($row) as $val) {
echo "<td>".$val."</td>";
}
echo "</tr>". "\n" ;
}

echo "<tr>";
foreach ($row as $val) {
echo "<td>".$val."</td>";
}
echo "</tr>". "\n" ;
}

13
各位先進好~~
個人設計一個以php connection ms 2008 sql server,
是可以很正確顯示出SQL SELECT 出來一筆筆的資料記錄, 但是無法顯示出SELECT出來 "欄位名稱" ...??
是否可以幫忙提正語法或是有相關於此示範程式顯示欄位PHP語法, 謝謝~~~

附上執行結果 : http://imageshack.us/photo/my-images/803/phpsqlsrv.jpg/


以下是個人php語法:


1 <html>
2     <head>
3     <meta http-equiv="Content-Type" content="text/html; charset=big5">
4      <title>
5       資料讀取的 sqlsrv 函數群
6      </title>
7     </head>
8       <body>
9         <table border="3" cellpadding="3" cellspacing="1">
10         <form action="conn.amsi.php" method="Post">
11         <b><center><font size="10">電子刷卡個人記錄查詢</font></center></b><br/>
12         <b>員工編號:</b>
13         <input type="Text" size=10 name="EmpCode" value="A"><br/>
14         <b>刷卡日期:</b><br/>
15           <input type="Text" size=10 name="MonsCode" value="">
16           <input type="Text" size=10 name="MoneCode" value="">
17           <input type="Submit" value="確定" name="btnSubmit"><br/>
18         (譬如:查2012年6月當月份刷卡記錄,就請輸入201206到201207)<br/>
19         </form>
20   <?php
21   
22   $action = $_server['PHP_SELF' ];
23   
24   if ($_server['REQUEST_METHOD'] == 'POST') {
25   
26   // echo '使用POST方法傳遞表單值';
27   
28   // echo "$_POST[PurCode]";
29   
30   }
31   
32   
33   /* Connect to the local server using Windows Authentication and
34   specify the AdventureWorks database as the database in use. */
35   $serverName = "erpdb";
36   
37   // $connectionInfo = array( "Database"=>"SKTEST");
38   /* Get UID and PWD from application-specific files. */   
39   
40   $connectionInfo = array(
41                           "Uid"=>"sk",
42                           "Pwd"=>"pass", 
43                           "Database"=>"SKTEST"
44                           );
45   
46   // echo $serverName, $connectionInfo;
47      
48   $conn = sqlsrv_connect( $serverName, $connectionInfo);
49   // echo $conn;
50    
51   if( $conn === false )
52     {
53        echo "Could not connect.\n";
54        die( print_r( sqlsrv_errors(), true));
55     }
56   
57   /* Define and execute the query. */
58   $tsql = 
59    "SELECT MC001 AS 員工編號, SUBSTRING (MC002,1,4) + '-' + SUBSTRING (MC002,5,2) + '-' + SUBSTRING (MC002,7,2) AS 刷卡日期,
60      '刷卡時間' = SUBSTRING(MC003,1,2) + ':' + SUBSTRING(MC003,3,4),
61           MC007 AS 班別, '班別' = CASE (MC007) WHEN '01' THEN '上班' ELSE '下班' END 
62     FROM SKTEST..AMSMC 
63     WHERE MC002 BETWEEN '$_POST[MonsCode]' AND '$_POST[MoneCode]' AND MC001 LIKE '$_POST[EmpCode]%'
64     ORDER BY MC001, MC002, MC007";
65   // echo $tsql;
66   
67   $cursorType = array("Scrollable" => SQLSRV_CURSOR_KEYSET);
68   $result = sqlsrv_query($conn, $tsql, $params, $cursorType);
69   // echo $result;
70    
71   if( $result === false)
72     {
73        echo "Error in executing query.\n";
74        die( print_r( sqlsrv_errors(), true));
75     }
76   
77   /* Retrieve the number of fields. */
78   $numFields = sqlsrv_num_fields( $result );
79   // echo $numFields;
80   
81   $rowCount = sqlsrv_num_rows($result);
82   echo "共計有:".$rowCount."筆"; 
83   
84   
85   
86   /* Iterate through each row of the result set. */
87   while( sqlsrv_fetch( $result ))
88     {
89        /* Iterate through the fields of each row. */
90        echo "<tr>";
91        for($i = 0; $i < $numFields; $i++)
92        {
93             echo "<td>". sqlsrv_get_field($result, $i, 
94                      SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR)). "</td>";
95              
96        }
97        echo "</tr>". "\n" ;
98        
99     }
100    
101   
102   /* Free statement and connection resources. */
103   sqlsrv_free_stmt( $result );
104   sqlsrv_close( $conn );
105   ?>
106          </table>
107       </body>
108   </html>

14
可以先透過 Response = MsgBox(StartDate )
去查看字串變數 StartDate  所得到是什麼 ??
看來應該是 20050101 少了前後引號 '20050101' 吧 !!

15
有關於 Domain 問題請教於各位,

原本有一台Windows NT 4.0 server(稱為P主機), 其主要功能是 Domain 帳號管理.
另有一台專門存放資料的主機,也就是所謂File server(稱為F主機).

因為此P主機硬碟以已經有異常狀況, 再加上此主機配備比較低階及OS版本比較舊...,必須要儘快找時間更換掉.

但有個問題..., 因為F主機是以加入P主機 Domain方式, 提供使用者透過登入P主機的網域行使授權權限來存取F主機檔案資料,
如果我直接把P主機替換掉(OS改為Windows 2003 server),
這樣子話...,是否會影響到原本使用者登入P主機的網域行使授權權限來存取F主機檔案資料 ??

是否有人願意提供詳述!!有比較安全好方法來解決這一個問題 .....

「Wish you all the best」 非常謝謝!!

頁: [1]