2011-01-31 67 views
1

比方說,我有一個是建立這樣一個視圖文件:以後回來? PHP查看文件

<html> 
... 
    <title><?= Functions::Text('title'); ?></title> 
.... 
<body> 

.... 
<?= Functions::Text('sometext'); ?> 

</body> 
</html> 

功能::文字 - 都會給我帶標題和sometext的search_stringtexts一個數據庫條目。

我想要一次拉出數據,而不是每個請求(這意味着 - 收集一個字符串數組給予文本(這並不困難) - 但我希望數據,在選擇查詢後,去哪個請求數據的確切地方

這意味着 -

$query = select ... ; 
... fetch ... 
$results_of_fetch = array ('title'=>'Welcome!','sometext' => 'sometext!!'); 

和視圖文件 -

<html> 
... 
    <title>Welcome!</title> 
.... 
<body> 

.... 
sometext!! 

</body> 
</html> 

回答

1

我認爲你的問題更多地與Object而不是MVC相關。

所以,我想提出建議。

如果您不得不一次重複使用對象,則不要使用靜態方法。 通過高效地使用非靜態方法,您不必一遍又一遍地查詢數據庫。

//create an object that takes parameter 
//from a constructor or some other public method 

class Function{ 

    public $title; 
    public $text; 
    public $footer; 

    function _construct($id) 
    { 
    $conn = mysql_connect("localhost", "mysql_user", "mysql_password"); 
    if (!$conn) { 
     echo "Unable to connect to DB: " . mysql_error(); 
     exit; 
    } 

    if (!mysql_select_db("mydbname", $con)) { 
     echo "Unable to select mydbname: " . mysql_error(); 
     exit; 
    } 

    $sql = "SELECT * FROM table1 WHERE id=".$id." LIMIT 1"; 
    //if you are using id, then don't forget to add limit 1 


    $result = mysql_query($sql); 

    if (!$result) { 
     echo "Could not successfully run query ($sql) from DB: " . mysql_error(); 
     exit; 
    } 

    if (mysql_num_rows($result) == 0) { 
     echo "No rows found, nothing to print so am exiting"; 
     exit; 
    } 

    $row = mysql_fetch_assoc($result); 
    //alternatively you can add loop check it at php manual 
    $this->title = $row['title']; 
    $this->text = $row['text']; 
    $this->footer = $row['footer']; 
    } 
} 

而且在你佈局(或視圖)文件

//the first thing you need to do is instantiate an object 
//don't use static method if you are reusing object again 

<?php 
    $function = new Function($id); 
      //pass some id or other parameter 
    ?> 

<html> 
... 
    <title> 
     <?= $function->title; ?> 
     <!-- alternatively you can do with some method also --> 
     </title> 
.... 
<body> 

.... 
<?= $function->text; ?> 

</body> 
</html> 

而且我可能不會理解你的需要,你可以發表評論,並請查看你的問題。

+0

它沒有回答我的問題,但它確實給了我一個主角,謝謝! – WEBProject

+0

@WEBProject沒關係檢查更新 –

0

您可以使用AJAX和jQuery jQuery的做到這一點,所以塔它會容易得多。

jQuery 

    $.post("fetchstuff.php", function(data){ 
     document.title = data.title; 
     $("#txt1").html(data.sometext); 
    }); 

fetchstuff.php 
    <?php 
     $sometext = "sometext"; 
     $title = "sometitle" 
    ?> 

完全未經測試,但輸出應該這個樣子。

<title>sometitle</title> 
    .... 
    <div id="txt1">sometext</div> 
+1

對於整個網站的使用情況將不太現實。 – WEBProject

+0

如果您希望:Google不會爲您的網站編制索引;使一切工作緩慢;浪費互聯網帶寬和服務器資源,那麼......這是一個好主意! – mateusza