2012-08-30 81 views
0

我是一名PHP初學者,並試圖編寫適用於HTML和MySql的PHP類。 我面臨以下問題, 我創建了一個名爲DatabaseManager的類,其中包含函數get_value。這個函數只是返回一個值。在另一個文件中,我使用java腳本點擊按鈕來調用此函數。但鏈接似乎不能在兩個文件之間工作....有人可以幫助我嗎? 謝謝。從另一個文件中調用php函數

這是我的文件,其中包含PHP類。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<title>Untitled 1</title> 
</head> 

<body> 

<?php 

class DatabaseManager { 

private $value=1; 


    public function get_value() 
    { 
    return value; 
    } 


} 

/php> 
</body> 
</html> 

,這裏是調用它的其他文件。

<html> 
<head> 
<?php include("DatabaseManager.php"); ?> 

<script type="text/javascript"> 

function connect() 
{ 

<?php 

$database_manager= new DatabaseManager; 
echo "the value is" . $database_manager->get_value(); 

?> 
} 

</script> 
</head> 

<body> 

<input type="button" value="Search " onclick="connect()"> 


</body> 
</html> 

包含函數的get_value文件的名稱是DatabaseManager.php

+0

改爲使用'mysqli_'或'PDO'。 –

+0

請不要將'mysql_ *'函數用於新代碼。他們不再被維護,社區已經開始[棄用流程](http://goo.gl/KJveJ)。請參閱[**紅框**](http://goo.gl/GPmFd)?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定,[本文](http://goo.gl/3gqF9)將有助於選擇。如果你關心學習,[這是一本很好的PDO教程](http://goo.gl/vFWnC)。 – PeeHaa

+0

包括文件將包括所有內容,所以你最終會得到**所有**。這將導致兩套嵌套' etc'標籤 – freefaller

回答

0

有幾件事情:

  1. DatabaseManager.php刪除所有的HTML。您將文件包含在其他地方,您不需要或不需要重複的HTML標記。

  2. 刪除您的MySQL部分中的@。這可以消除您遇到的任何錯誤。

  3. 切換到PDOMySQLi。他們更安全(如果使用得當)

  4. 您的關閉php標記在數據庫文件中是錯誤的。你有/php>它應該是?>

  5. 你的班級完全沒有這樣做。

+0

雖然按照第4點快速注意 - 在'純'php文件中,完全跳過結束標記。 –

+0

謝謝,我將 –

0

你這樣做不對路,輸出的東西在你的JavaScript功能連接()使這個:

 function connect() { 
     alert(" 
    <?php  
      $database_manager= new DatabaseManager; 
      echo "the value is" . $database_manager->get_value();  
     ?> 
     "); 
    } 

,因爲從你的執行PHP代碼分開放在單擊事件。 其實目前還不清楚你希望得到什麼,但是你誤解了基礎知識。

[編輯澄清網友質疑如何輸出的東西到屏幕]

+0

除以零,我只是想確保兩個文件之間的鏈接工作正常。因此,我需要在屏幕上點擊指示成功的按鈕來回顯一些內容....你能否給我一個例子?我點擊按鈕時看不到那句話。 –

+0

確定你沒有看到,因爲JS函數輸出的東西到你的屏幕不叫...我會編輯我的答案,所以你可以看到熱警報的東西。 –

+0

除以零, 我試圖做這個警報(「嗨」); 它工作正常。 但警報( 「 的get_value(); > ?」); 沒有與我一起工作。 –

0

這裏有多個的東西,你douing錯了。

  1. 你並不需要在第一個例子中的HTML代碼。
  2. 您關閉PHP錯誤/php>應該產生一個錯誤,它應該是?>
  3. 當你實例化你的DatabaseManager類你忽略了,這意味着構造函數永遠不會被調用的括號,這也將產生一個錯誤。
  4. 你可能試圖在javascript中使用alert,在這種情況下你沒有做。

它應該是這個樣子,而不是:

<?php 
class DatabaseManager { 
private $value = 1; 

    function getValue() { 
     return $this->value; 
    } 

} 

?> 

而在你的HTML(還是PHP,但包含HTML的標記之一)文件:

<html> 
<head> 
    <script type="text/javascript"> 
    function connect() { 
     alert(" 
     <?php 
      include "nameofDBManagerClassFile.php" 
      $dbm = new DatabaseManager(); 
      echo "the value is " . $dbm->getValue(); 
     ?> 
     "); 
    } 
</script> 
</head> 
<body> 
</body> 
</html> 

也有可能是你認爲JavaScript函數內部的php代碼不會被執行直到你調用JS函數connect(),事實並非如此。 PHP代碼在服務器上執行,因此將在用戶請求該網頁時調用,另一方面,javascript將在客戶端並在用戶瀏覽器中執行。我強烈建議你閱讀php和JavaScript。

+0

謝謝@Daniel, 這樣做的嗎? <?php $ database_manager = new DatabaseManager(); alert($ database_manager-> get_value()); ?> –

+0

你仍然需要將php語句封裝在引號中。像這樣:alert(「<?php ..code here ..?>」); –

1

不喜歡這個

在Databasemanager.php

<?php 
    class DatabaseManager {  
    private $value = 1; 

     public function get_value() {  
      return $this->value; 
     }  
    } 

    ?> 

在另一個PHP文件

<html> 
<head> 
<?php include("Databasemanager.php"); ?> 

<script type="text/javascript"> 

function connect() 
{ 
<?php 
$database_manager= new DatabaseManager; 
echo "the value is" . $database_manager->get_value(); 
?> 
} 

</script> 
</head> 

<body> 

<input type="button" value="Search " onclick="connect()"> 

</body> 
</html> 
0

我認爲最簡單的方法是使用需要我的另一個文件。

require('login.php'); 

function get_value() 
{ 
return get_value; 
} 
相關問題