作者 主題: PHP要怎麼接applet 的訊息?  (閱讀 10950 次)

0 會員 與 1 訪客 正在閱讀本文。

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
PHP要怎麼接applet 的訊息?
« 於: 2011-08-19 17:27 »
請問各位大大,
PHP要怎麼去接applet 的訊息 ??
« 上次編輯: 2011-08-19 18:43 由 NARs »

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: PHP要怎麼接applet 的訊息?
« 回覆 #1 於: 2011-08-19 19:24 »
請問各位大大,
PHP要怎麼去接applet 的訊息 ??

方式1:
在 applet 呼叫 js 函數, 將資料傳給 js, 然後由 js 來處理後續工作, 例如:

代碼: [選擇]
import java.applet.*;
import java.net.*;

public class CallJS extends Applet {
  public void init(){
    String msg = "嗨~嗨~~ 我是 Java Applet 的字串!";
    try {
      getAppletContext().showDocument(
        new URL("javascript:showString('" + msg +"')")
      );
    } catch (MalformedURLException me) { }
  }
}

代碼: [選擇]
<html>
<head></head>
<body>
<script>
function showString(str) {
  document.getElementById('strDemo').innerHTML = str;
}
</script>
<div id="strDemo"></div>
<applet code="CallJS.class" name="myapplet" width="30" height="20"></applet>
</body>
</html>

開這個網頁會顯示 applet 送來的字串
可以在 showString() 直接導到目標 php, 或是用 ajax...


方式2:
在 applet 裡連線到 server, 直接將資料丟給 server 處理, 這個就自己去玩玩看嘍  :D

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP要怎麼接applet 的訊息?
« 回覆 #2 於: 2011-08-19 20:57 »
給你一個~~"讚"啦~~

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP要怎麼接applet 的訊息?
« 回覆 #3 於: 2011-08-22 16:05 »
Yamaka大大,
感謝分享的例子,
照你的範例,修改成我要的,但是在Firefox卻沒辦法秀出從applet接的訊息,但是在IE,chrome上是可以接到applet的訊息並秀在頁面上,
這應該是firefox的設定問題吧? 請問大大有遇過嗎??
« 上次編輯: 2011-08-22 16:22 由 NARs »

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: PHP要怎麼接applet 的訊息?
« 回覆 #4 於: 2011-08-22 17:00 »
Yamaka大大,
感謝分享的例子,
照你的範例,修改成我要的,但是在Firefox卻沒辦法秀出從applet接的訊息,但是在IE,chrome上是可以接到applet的訊息並秀在頁面上,
這應該是firefox的設定問題吧? 請問大大有遇過嗎??

剛剛試了一下
環境是 xp sp2 + firefox 6.0 + jre 外掛(新安裝的)
測試上面那個範例, 從本機直接開網頁, 或是由 web server 下載來開
都能正常顯示那一行字串, firefox 沒做啥設定, 都是系統預設的環境
也許是你的 firefox 有擋 applet? 有沒有試過其他 applet 能不能正常跑?  ::)

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP要怎麼接applet 的訊息?
« 回覆 #5 於: 2011-08-22 19:23 »
剛改了一下JAVA, 神奇的居然在firefox可以了~~~

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP要怎麼接applet 的訊息?
« 回覆 #6 於: 2011-08-29 23:18 »
Yamaka大大,
依照你的範例,加了一個按鈕,我想要在按鈕click時,再去執行applet的function , 但是在refresh時,就會自動執行,請問大大是那錯了嗎?大大可以指導一下嗎??

代碼: [選擇]
import java.applet.*;
import java.net.*;

public class CallJS extends Applet {
  public void init()
{}
  public void go(){
    String msg = "嗨~嗨~~ 我是 Java Applet 的字串!";
    try {
      getAppletContext().showDocument(
        new URL("javascript:showString('" + msg +"')")
      );
    } catch (MalformedURLException me) { }
  }
}


代碼: [選擇]
<html>
<head></head>
<body>
<script>
function showString(str) {
  document.getElementById('strDemo').innerHTML = str;
}
</script>
<div id="strDemo"></div>
<applet  id="myapplet" code="CallJS .class" name="myapplet" width="30" height="20"></applet>
 <input type="button"  name="groovybtn1"  id="btn" class="groovybutton"
   value="Begin" onclick="this.disabled=1; document.getElementById('myapplet').go();"   >

</body>
</html>


Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: PHP要怎麼接applet 的訊息?
« 回覆 #7 於: 2011-08-30 00:05 »
Yamaka大大,
依照你的範例,加了一個按鈕,我想要在按鈕click時,再去執行applet的function , 但是在refresh時,就會自動執行,請問大大是那錯了嗎?大大可以指導一下嗎??
引用
<div id="strDemo"></div>
<applet  id="myapplet" code="CallJS .class" name="myapplet" width="30" height="20"></applet>
 <input type="button"  name="groovybtn1"  id="btn" class="groovybutton"
      value="Begin" onclick="this.disabled=1; document.getElementById('myapplet').go();"   >

自動執行? 你確定嗎?
要不要檢查一下 applet 的 code 是否輸入正確

ps:
不知樓主使用的程式編輯器所用的是什麼字型
如果是使用變動字寬的字型, 建議改用固定字寬的字型

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP要怎麼接applet 的訊息?
« 回覆 #8 於: 2011-08-30 09:09 »

大大,
我是用eclipse加dreamwaver
這是我的applet簡單的code,可是在開啟網頁是,就會自動執行go function ,而不是等到按鈕click才執行????

代碼: [選擇]
mport java.applet.*;
import java.net.*;

import javax.swing.JApplet;

public class Applet_php extends Applet {
public void init(){


} public void go2(){
int sum=0;
for(int i =1;i<=5;i++)
sum =sum +i;
try {
getAppletContext().showDocument(
new URL("javascript:showString2('" + sum +"')")
);
} catch (MalformedURLException me) { }

}
public void go(){
int sum=0;
for(int i =1;i<=10;i++)
sum =sum +i;
try {
getAppletContext().showDocument(
new URL("javascript:showString('" + sum +"')")
);
} catch (MalformedURLException me) { }

}


public static void main(String[] args) {
}

}




Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: PHP要怎麼接applet 的訊息?
« 回覆 #9 於: 2011-08-30 09:28 »

大大,
我是用eclipse加dreamwaver
這是我的applet簡單的code,可是在開啟網頁是,就會自動執行go function ,而不是等到按鈕click才執行????


沒說你的 java 碼有錯
上面都把問題點特別標示了
這樣都還看不出來嗎 = =|||

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP要怎麼接applet 的訊息?
« 回覆 #10 於: 2011-08-30 11:10 »
大大,
applet code改了沒是一樣的問題,大大可以指導一下嗎?

代碼: [選擇]
<applet id="myapplet" code="myapplet.class" name="myapplet" width="0" height="0" >
   <PARAM NAME=name VALUE=<? echo $name ?>>
        </applet>

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: PHP要怎麼接applet 的訊息?
« 回覆 #11 於: 2011-08-30 11:20 »
代碼: [選擇]
<div id="strDemo"></div>
<applet  id="myapplet" code="CallJS .class" name="myapplet" width="30" height="20"></applet>
 <input type="button"  name="groovybtn1"  id="btn" class="groovybutton"
   value="Begin" onclick="this.disabled=1; document.getElementById('myapplet').go();"   >

上面你的 code="CallJS .class" 裡面多了一個空白, 你沒看出來嗎 orz

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP要怎麼接applet 的訊息?
« 回覆 #12 於: 2011-08-30 11:24 »
大大,
是的,空白的問題我已經改掉了,可是還是一樣的問題,在開啟網頁或是更新頁面時,就會自動執行go function ,而不是等到按鈕click才執行?

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: PHP要怎麼接applet 的訊息?
« 回覆 #13 於: 2011-08-30 11:49 »
大大,
是的,空白的問題我已經改掉了,可是還是一樣的問題,在開啟網頁或是更新頁面時,就會自動執行go function ,而不是等到按鈕click才執行?

改過之後的內容貼上來..

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP要怎麼接applet 的訊息?
« 回覆 #14 於: 2011-08-30 13:30 »
Yamaka大大,
 只要一重整頁面或是開啟時,這段update sql就會執行更新到資料庫??????
                                 $sql = "update customer set paid=1 where ID = '".$ID."'";
            $result = $db->update($sql);
                                //----------------------------------



代碼: [選擇]
<html>
<body>
<script>
               function showMsg(str) {document.getElementById('recvApplet').innerHTML = str;}
function showMsg2(str) {
document.getElementById('recvApplet2').innerHTML = str;
document.getElementById("btn").disabled=false;
}

</script>
<?php

 require_once("DB_config.php");
    
  require_once("DB_class.php");
    
 $db = new DB;
       
$db->connect_db($_DB[&#39;host&#39;], $_DB[&#39;username&#39;], $_DB[&#39;password&#39;], $_DB[&#39;dbname&#39;]);
$db->query("select ID,valueA, valueB from customer ;");
     
 $result_num $db->get_num_rows();
          
      

          echo 
"<br />";*/
   
     
 while($row $db->fetch_array())
     
 {

        
  $valueA$row[&#39;valueA&#39;];
  $valueB$row[&#39;valueB&#39;];
        $ID$row[&#39;ID&#39;];

                                 // 只要一重整頁面或是開啟時,這段update sql就會執行更新到資料庫??????
                                 
$sql "update customer set paid=1 where ID = &#39;".$ID."&#39;";
$result $db->update($sql);
                                
//----------------------------------

  $value$valueA;
if($total>30)
{
$valuetrim($valueA);
     }
         
   else 
   {
   $valuetrim($valueB);
   }
   }
 
?>

            <applet id="myapplet" code="myapplet.class" name="myapplet" width="0" height="0" >
      <PARAM NAME=testingServer VALUE=<? echo $value?>>
        </applet>
         <br />
         <br />
          <br />
          <table width="723" border="0" align="center">
          <tr>
          <td width="406" align="center">
         
          </td>
          <td align="center"><form name="groovyform" >
          <input type="button"  name="groovybtn1"  id="btn" class="groovybutton"
   value="Begin Test" onMouseOver="goLite(this.form.name,this.name)" onMouseOut="goDim(this.form.name,this.name)"
       onclick="this.disabled=1; document.getElementById('myapplet').go();"   >
</form>

</td>
.........
......

</body>
</html>
« 上次編輯: 2011-08-30 16:09 由 NARs »

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4047
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
Re: PHP要怎麼接applet 的訊息?
« 回覆 #15 於: 2011-08-30 13:39 »
php & 資料庫的問題就可以插一下話了

為什麼你覺得不該執行那些 php code ?

是條件未滿足?還是你有什麼限制給他?
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP要怎麼接applet 的訊息?
« 回覆 #16 於: 2011-08-30 13:43 »
是的, 大大我知道了,那請問如果是要button click時再執行的話, 大大可以指導一下要怎麼修正嗎??

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: PHP要怎麼接applet 的訊息?
« 回覆 #17 於: 2011-08-30 13:48 »
client 端與 server 端的東西請先分清楚好嗎..

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP要怎麼接applet 的訊息?
« 回覆 #18 於: 2011-08-30 16:02 »


如果是用POST的方式,傳給同一頁的PHP接下的話,可以嗎?

代碼: [選擇]
if($_POST["submit"]=="Test")
{
........
}

代碼: [選擇]
<form name="groovyform" action=""  method="post">>
         <input name="submit" type="submit"  class="groovybutton"
   value="Test" onMouseOver="goLite(this.form.name,this.name)" onMouseOut="goDim(this.form.name,this.name)"
       onclick="this.disabled=1; document.getElementById('myapplet').go();"   >
</form>

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4047
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
Re: PHP要怎麼接applet 的訊息?
« 回覆 #19 於: 2011-08-30 17:05 »
可以嗎?

你測試的結果?
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP要怎麼接applet 的訊息?
« 回覆 #20 於: 2011-08-30 17:11 »
在applet接不到PHP 的變數,大大可以指導一下嗎?

代碼: [選擇]
if($_POST["submit"]=="Test")
{
require_once("DB_config.php");
      require_once("DB_class.php");
    $db = new DB;
        $db->connect_db($_DB['host'], $_DB['username'], $_DB['password'], $_DB['dbname']);
$db->query("select ID,valueA, valueB from customer ;");
      $result_num = $db->get_num_rows();
         
     
          echo "<br />";*/
   
      while($row = $db->fetch_array())
      {

       
$valueA= $row['valueA'];
$valueB= $row['valueB'];
        $ID= $row['ID'];

                                 
                                 $sql = "update customer set paid=1 where ID = '".$ID."'";
$result = $db->update($sql);
                               

  $value= $valueA;
if($total>30)
{
$value= trim($valueA);
    }
             else
   {
   $value= trim($valueB);
   }
              }
                         }
  ?>
            <applet id="myapplet" code="myapplet.class" name="myapplet" width="0" height="0" >
      <PARAM NAME=customer VALUE=<? echo $value?>>   //......接不到值??????
        </applet>

« 上次編輯: 2011-08-30 20:30 由 NARs »

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: PHP要怎麼接applet 的訊息?
« 回覆 #21 於: 2011-09-01 00:25 »
在applet接不到PHP 的變數,大大可以指導一下嗎?

要看你的 $value 裡面有沒有東西啊

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP要怎麼接applet 的訊息?
« 回覆 #22 於: 2011-09-01 09:08 »
Yamaka大大,
Debug後發現,是在form的部份,onsubmit和POST不能同時使用,但是使用onsubmit方式,會變成先執行javascript function ,再去提交表單,但是因為我的做法必須先提交表單,取得DB的值後,再把值丟給applet當參數,
所以請問大大,有其它的方式可以先提交表單再去執javascript function嗎?



代碼: [選擇]
<script>
function excuteApplet()
{
    document.getElementById('myapplet').go();
             return true;
}
</script>

<form action=""  name="form1" onsubmit="return excuteApplet()" method="post">
            <input  name="btn" type="submit" value="Test" id="Test"   >
            </form>





Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: PHP要怎麼接applet 的訊息?
« 回覆 #23 於: 2011-09-01 09:39 »
Debug後發現,是在form的部份,onsubmit和POST不能同時使用,但是使用onsubmit方式,會變成先執行javascript function ,再去提交表單,但是因為我的做法必須先提交表單,取得DB的值後,再把值丟給applet當參數,
所以請問大大,有其它的方式可以先提交表單再去執javascript function嗎?

如果要將程式碼都放在同一個網頁檔裡
那就要善用判斷式來控制什麼時候該跑哪些碼
例如說:

代碼: [選擇]
if($value有東西) {
  ......
} else { // $value沒有東西
  ......
}

上面只是假設, 樓主要根據自己的需求來控制
不然就分開成幾頁, 什麼時候跑哪些碼都分開到不同檔案..