假设我有一个像这样构建的视图文件:
<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>
答案 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>