PHP创建文章列表的方法

时间:2014-06-09 12:38:07

标签: php html arrays parsing

我打算编写动态创建文章和新闻列表的功能,但不确切知道什么是正确的方法。

我有/articles/news个文件夹,其中包含article1.phparticle2.php等文件。

这些文件包含变量$date(发布日期),$type(新闻/文章),$h1, $h2(标题,副标题),$short(要显示的短缩略图)列表)。

我想在一个页面上显示这些文件的列表。

HTML:

<div>
    $content <!--here goes list of all articles/news-->
</div>

是否会更好:

1

  • articlelist.php中写入while循环:
[pseudocode]

    $content = "";
    while (get another filename from /articles)
       include filename
       $content .= (variables from filename.php parsed into html)
    display $content
  • 第二个是newslist.php
  • 的循环

(使用这种方法,例如按日期排序文章可能很困难。)



或者也许:

2

  • 创建articlearray.phpnewsarray.php个文件,以key : value = $date : [$type, $h1, $h2, $short]
  • 格式存储数据中每篇文章和新闻文件的数据
  • 创建parsearray函数,将整个给定数组解析为HTML(包含所有文件中的数据)
  • $content = parsearray(...)articlelist.php
  • 中致电newslist.php
  • 显示$ content。

或者还有其他更好的解决方案吗?

修改

我没有任何数据库,因为文章/新闻非常少。如果它真的有必要,我会使用一个,但此刻请假设它应该用纯PHP完成。 (我也问这个问题是为了学习目的,不仅实用。)

1 个答案:

答案 0 :(得分:2)

首先:建议管理您的内容和/或不同文件中的代码(为了更好的可理解性和可维护性),但不是强制性的。我会选择以下方法。将您的内容分成三个文件:

  1. index.php(包含“主要”功能)
  2. data.php(包含数据)
  3. functions.php(包含可调用函数)
  4. 的index.php

    // index.php
    
    require_once 'data.php';
    require_once 'functions.php';
    
    $allowedModules = array('articles', 'news');
    
    if(empty($_GET['m']) || null === $_GET['m']) {
        die('Module is required');
    } else {
        $module = $_GET['m'];
    }
    
    if(!in_array($module, $allowedModules)) {
        die('Invalid module');
    }
    
    echo execute($module);
    

    data.php

    // data.php
    
    $data = array(
        'articles' => array(
            array(
                'date' => '2014-06-10',
                'type' => 'article',
                'h1' => 'My Headline #1',
                'h2' => 'Subheadline #1',
                'short' => 'My teaser'
            ),
            array(
                'date' => '2014-06-09',
                'type' => 'article',
                'h1' => 'My Headline #2',
                'h2' => 'Subheadline #2',
                'short' => 'My teaser'
            )
        ),
        'news' => array(
            array(
                'date' => '2014-06-08',
                'type' => 'news',
                'h1' => 'My News Headline #3',
                'h2' => 'Subheadline #3',
                'short' => 'My teaser'
            ),
        )
    );
    

    的functions.php

    // functions.php
    
    function execute($module) {
        global $data;
        $content .= '<div>';
        foreach($data[$module] as $item) {
            $content .= '<span>' . $item['date'] . '</span>';
            $content .= '<h1>'. $item['h1'] . '</h1>';
            // $content .= ...
        }
        $content .= "</div>";
        return $content;
    }
    

    现在,您可以通过index.php?m=articlesindex.php?m=news致电您的信息页以显示您的文章或新闻。

    旁注:这种方法使得以后在某种程度上可以轻松切换到数据库。