0

首先:我知道这是一个非常混乱的代码,而不是正确的方法。但它第一次尝试编写一个类和函数..

我想要它做什么:输出“文章”表中的所有行,在一个 div 中(div 再次为每一行“重复”)并按 id 和日期对其进行排序。稍后我想按页面ID过滤它。

它的作用:仅提供 1 行的输出,不显示其他行。

我希望我的解释是有道理的..

这就是我的“文章”表现在的样子:

|身份证| |page_id| |标题| |内容| |日期| |职位|

标题为纯文本,html 内容来自管理面板中的所见即所得编辑器,日期为 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();

回声 $content->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;
  }
}

这是你想要的方式吗?反正结果不变。。

4

2 回答 2

3
$content = '<div class="blok">...';

您正在$content为 foreach 循环的每次迭代中的条目值重新分配变量。所以$content只会包含最后一个条目。

使用附加运算符.=

$content .= '<div class="blok">...';

编辑:正如@JoseAreas 在评论中所说,您应该在进入循环之前编写:

$content = "";

以避免一些通知。

于 2013-04-29T18:41:06.537 回答
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;
    }
于 2013-04-29T19:14:23.510 回答