我开发了一个用于分页url友好的类,问题是你不能拉数组变量来定义数据库的值
private function query($page){
$u = Url::getURL($page);
$numreg = $this->max_reg; // Quantos registros por página vai ser mostrado
if (!isset($u)) {
$u = 1;
}
@$inicial = $u * $this->max_reg;
$sql = mysql_query("SELECT * FROM {$this->table} ORDER BY id desc LIMIT $inicial, $numreg") or die(mysql_error());
$sql_conta = mysql_query("SELECT * FROM {$this->table}") or die(mysql_error());
$out = '';
while ($data = mysql_fetch_array($sql_conta)) {
$out.= $this->HTML;
}
return print $out;
}
到目前为止一切正常
问题:
global $data;
$p = new pagination;
$p->HTML = '
<li>
<div class="clbthumb"><a href="#"><img src="asset/images/noticias/news4.gif" alt="" /></a></div>
<div class="clbdes">
<p class="clbtitle"><a class="colr4" href="#">'.$data['titulo'].'</a></p>
<p>'.$data['texto'].'</p>
<div class="clear"></div>
<div class="clbinfo">
<ul>
<li class="datetag">
<span class="colr3">Data:</span>
<span class="pink padr">Tue, 26/01/11</span>
<li class="moreinfo"><a href="#">:: Ler Mais</a></li>
</ul>
</div>
</div>
</li>';
$p->af_HTML = '
</ul>
</div>';
$p->_build(2);
有没有办法做到这一点?
答案 0 :(得分:1)
您不能以这种方式访问在类中分配的变量。
您的使用中的$data
变量(分配给HTML)无法访问(在您的第二部分代码中)。
如果您坚持从类外部设置HTML,则可以为每个变量的HTML添加占位符,然后在类中替换它们。
所以你的代码看起来像
(assuming class is pagination)
class pagination
private function query($page){
...
while ($data = mysql_fetch_array($sql_conta)) {
$out.= str_replace('##DATA_TITULO##', $data['titulo'] , $this->HTML, $out);
$out.= str_replace('##DATA_TEXTO##', $data['texto'] , $this->HTML, $out);
}
...
}
}
,第二部分将是
$p = new pagination;
$p->HTML = '... <a class="colr4" href="#">##DATA_TITULO##</a></p> <p>##DATA_TEXTO##</p>...';
答案 1 :(得分:0)
$data
需要在定义它的函数中声明为全局声明(以及在使用它的任何其他函数中声明)
private function query($page){
global $data;
...
}
否则,您只设置一个本地范围的变量,该变量恰好也被命名为$data
。
如果您的pagination
类具有html($data)
函数以避免全局变量并确保从$data
获取当前值,而不是最初设置$p->HTML
时的值是什么。