2011-05-24 65 views
2

我需要在頁面正在加載時調用php函數。如何在頁面正在加載時調用php函數

意思是當我點擊頁面Homepage.php的鏈接或菜單時,它會重定向到名爲History.php的頁面。 這裏在加載頁面History.php之前,它會調用函數從數據庫中獲取數據。

請花你寶貴的時間回答這個問題。提前致謝。

+0

如果您打電話給History.php,PHP將運行。無論您需要運行哪些代碼來獲取數據,您都會在那裏完成。爲什麼這是不夠的?或者你的意思是別的嗎? – 2011-05-24 06:06:00

+0

由於PHP在加載頁面之前運行,只需在history.php中調用你的函數 – JohnP 2011-05-24 06:06:32

+0

是@Pekka,但我需要調用一個函數,在History.php頁面下載(執行)之前應該執行該函數。 – Indu 2011-05-24 06:08:36

回答

4

頂History.php的:

<?php 
    include('/path/to/php/program/with/function.php'); 
    the_function(); 
+0

如果我將它包含在文件的頂部,其中包含了函數(DB鏈接),並且如果調用該函數它會執行的頁面執行。 – Indu 2011-05-24 06:11:24

+0

是的......請記住,它是你的PHP文件發回任何東西,所以你有完全的控制權。如果你的PHP頁面什麼都沒做,瀏覽器將不會得到任何迴應。 – 2011-05-24 06:15:05

+0

它執行之前?否 - 如果不在進程中執行它,則不能調用該函數。在下載之前?是的 - 因爲它位於頂部,所以沒有任何輸出,所以沒有任何東西可以讓瀏覽器下載。 – Quentin 2011-05-24 06:17:47

0

你是一個發送到瀏覽器的任何迴應,所以乾脆叫什麼之前,發送頁面的其餘部分功能(在做PHP頁面的開始)。

0

您也可以嘗試在頂部:

Hisory.php

<?php 

function getData(){ 
    // function body 
} 

$data = getData(); 

?> 

但如果您使用的是許多地方這種類型的函數,那麼你應該把它放在一個文件,包括它在那個你想調用這個函數的文件中。如昆汀所述。

0

PHP運行時是一個將「自動」(除非另有配置)運行.php文件的解釋器。這意味着<?php ?>標籤中的所有代碼都將由PHP引擎執行。所以你可以先在你的頁面放置一個php代碼塊。直接包含從您的服務器獲取數據的邏輯。

// Example code taken from php website 
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
echo 'Connected successfully'; 

$query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'", 
    mysql_real_escape_string($firstname), 
    mysql_real_escape_string($lastname)); 

// Perform Query 
$result = mysql_query($query); 

// Check result 
// This shows the actual query sent to MySQL, and the error. Useful for debugging. 
if (!$result) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    $message .= 'Whole query: ' . $query; 
    die($message); 
} 

// Use result 
// Attempting to print $result won't allow access to information in the resource 
// One of the mysql result functions must be used 
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc. 
while ($row = mysql_fetch_assoc($result)) { 
    echo $row['firstname']; 
    echo $row['lastname']; 
    echo $row['address']; 
    echo $row['age']; 
} 

mysql_close($link); 

如果你想有一個持久連接使用mysql_pconnect(),而不是mysql_connect()

我不過強烈建議您,至少,把數據庫邏輯駐留在一個單獨的文件,你包括使用include()include_once()require()require_once()類。

如果這是一個更大的系統的一部分,你有時間我會建議你在MVC模式念起來看看像Zend框架或類似的框架具有良好的數據庫抽象等

好運!

相關問題