首先:我知道这是一个非常混乱的代码,而不是正确的方法。但它首次尝试写一个类和函数..
我想要它做什么:输出“articles”表中的所有行,在div中(再次为每行重复“div”)并按id和date对其进行排序。稍后我想按页面ID过滤它。
它的作用:只输出1行,不显示其他行。
我希望我的解释有意义。
这就是我的“文章”表现在的样子:
| ID | | PAGE_ID | |标题| |内容| |日期| |位置|
标题是纯文本,html中的内容来自adminpanel中的WYSIWYG编辑器,日期为DD-MM-YYYY。
这就是我的“班级”的样子:
include_once('./includes/config.php');
class Content {
public $id;
public $page_id;
public $title;
public $content;
public $position;
var $conn;
function Content()
{
$this->conn = mysql_connect(Config::DB_HOST, Config::DB_USER, Config::DB_PASS);
mysql_select_db(Config::DB_NAME, $this->conn);
}
function get_content_articles()
{
$sql = "SELECT id, page_id, title, content, date, position FROM articles ORDER BY id, position";
$result = mysql_query($sql, $this->conn);
if ( !$result )
return false;
$fetch_all = array();
while($article = mysql_fetch_assoc($result))
$fetch_all[] = $article;
return $fetch_all;
}
public function display_content() {
$this->article = $this->get_content_articles();
foreach ( $this->article as $article)
$content = '<div class="blok">
<h2>[id:'.$article['id'].']
</br>
[title: '.$article['title'].']</h2>
</br>
[content: '.$article['content'].']
</br>
[date: '.$article['date'].']
</div>';
return $content;
}
}
这就是我使用它的方式:
$content = new Content();
echo $ content-&gt; display_content();
此处的测试页:http://thepiratehenk.nl/pgwe/testcontent.php
是否有人建议如何解决这个问题? (请原谅我的英语不好和问题,我希望这一切都有道理。)
好的,谢谢你到目前为止的答案。我知道我不应该在类中使用mysql_函数..但这是我目前最了解的唯一方法。
我将display_content()函数更改为:
public function display_content() {
$this->article = $this->get_content_articles();
foreach ( $this->article as $article)
$content = "";
$content .= '<div class="blok">
<h2>[id:'.$article['id'].']
</br>
[title: '.$article['title'].']</h2>
</br>
[content: '.$article['content'].']
</br>
[date: '.$article['date'].']
</div>';
return $content;
}
}
这是你的意思吗?无论如何,结果都没有改变..
答案 0 :(得分:3)
$content = '<div class="blok">...';
您正在将变量$content
重新分配给foreach循环的每次迭代中的条目值。因此$content
只会包含最后一个条目。
使用追加运算符.=
。
$content .= '<div class="blok">...';
编辑:正如@JoseAreas在评论中所说,你应该在进入循环之前写一下:
$content = "";
以避免一些注意事项。
答案 1 :(得分:1)
这是正确的方式和@bwoebi的建议:
public function display_content() {
$this->article = $this->get_content_articles();
$content = "";
foreach ( $this->article as $article) {
$content .= '<div class="blok">
<h2>[id:'.$article['id'].']
</br>
[title: '.$article['title'].']</h2>
</br>
[content: '.$article['content'].']
</br>
[date: '.$article['date'].']
</div>';
}
return $content;
}