2011-12-09 56 views
0

我们有一个从MySQL数据库中绘制的日期列表。这部分非常简单,工作得很好,执行$ query,遍历数组,找到满足条件的条件,回显一些html代码和日期本身。为mysql创建一个php变量

我们希望能够弥补的问题是该列表出现在网页上的三个不同位置。每次出现时,都会运行php代码,进行数据库查询并返回结果。

我想知道的是,如果有一种方法可以在开始时创建一个php变量,然后仅在所有三个点中回显该变量,而不是三次运行代码。

我已经试过了小白的想法简单地使用:

$date = (...all the php query/echo code...); 
and 
$date = { ...all the php query/echo code... }; 

除了排列那里。但无济于事。

+0

你也可以使用一个函数的属性来保存值 – Ruben

回答

1

是的,你可以把它在一个变量在你的PHP文件的顶部存储

echo $date; 

而且又在别处:

echo $date; 

关于你的评论:

$date = ''; // this will hold all dates 
while($tourtime = fetch_result_from_db(...)){ // 'the loop', whatever yours look like 
    // instead of echoing, append to the string $date 
    $date .= "<span class=\"dates\">". date ("j F Y", $tourtime) . "</span><br />"; 
} 

.=附加(连接)字符串。


加成:如果你有很多的数据,它可能会更好w.r.t.效率首先收集所有行,然后在单个操作中将它们连接成一个字符串。你可以这样做:

$rows = array(); 
while($tourtime = fetch_result_from_db(...)){ 
    $rows[] = "<span class=\"dates\">". date ("j F Y", $tourtime) . "</span><br />"; 
} 
$date = implode($rows); 
+0

这基本上是我们想要做的,但不知道如何创建字符串。当前代码循环并执行“echo”“。日期(“j F Y”,$ tourtime)。 “
”'。我们需要改变什么来使它将各行存储为长字符串(上述示例的多个实例)? – Tom

+0

@Tom看到我更新的答案。我希望它变得清晰。 – middus

+0

感谢您的额外信息。这应该像一个魅力,并保存一些数据库查询。会和他们两个玩,我们的日期列表通常最多从1到20个日期。 – Tom

0

是的,你可以给变量更多你使用它之前给的值。随意做到这一点。

如果3点有不同的参数,你应该创建变量作为模板般的风格。

// beginning of the code 
$statementTemplate = "select * from x where a=8 and b<9 order by #"; 

//... some code... 

// point 1 
$statement = str_replace("#","name",$statementTemplate); 
// perform statement 

//... some code... 

// point 2 
$statement = str_replace("#","name desc",$statementTemplate); 
// perform statement 

//... some code... 

// point 3 
$statement = str_replace("#","lastmodify",$statementTemplate); 
// perform statement 

不要害怕,程序可以做任何事情!

// query ... 
// but don't echo, store in a string 
$date = 'this contains what is supposed to be echoed later on.'; 

以后然后:

+0

'str_replace'?这应该是一个穷人的预先准备好的陈述吗? – middus

+0

但这是问题的答案。这个家伙是新手,他/她不确定以后可以使用变量,或者我们可以用它们做什么。 – ern0