以后回来? PHP查看文件

时间:2011-01-31 09:22:35

标签: php model-view-controller

假设我有一个像这样构建的视图文件:

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

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

</body>
</html>

函数::文本 - 会在表texts中为我提供一个带有search_string title和sometext的数据库条目。

我想立即提取数据,而不是每个请求(这意味着 - 收集给予文本的字符串数组(这并不难) - 但是我想要在select查询之后的数据到转到请求数据的确切位置。

这意味着 -

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

视图文件 -

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

....
sometext!!

</body>
</html>

2 个答案:

答案 0 :(得分:1)

我认为你的问题与对象而不是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>

我可能不了解您的必要性,您可以发表评论,并请审核您的问题。

答案 1 :(得分: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>