Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用函数显示内容无法正常工作_Php_Arrays_Class_Fetch - Fatal编程技术网

Php 使用函数显示内容无法正常工作

Php 使用函数显示内容无法正常工作,php,arrays,class,fetch,Php,Arrays,Class,Fetch,首先:我知道这是一个非常混乱的代码,不是正确的方法。但它首次尝试编写类和函数.. 我希望它做什么:将“articles”表中的所有行以div的形式输出(每行的div“repeated”)并按id和日期排序。稍后我想按页面id对其进行筛选 它的作用:只给出一行输出,其他行不显示 我希望我的解释有道理 这就是我的“文章”表现在的样子: |id |页码| id |标题|内容|日期|位置| 标题为纯文本,html内容来自adminpanel中的WYSIWYG编辑器,日期为DD-MM-YYYY 这就是我的

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

我希望它做什么:将“articles”表中的所有行以div的形式输出(每行的div“repeated”)并按id和日期排序。稍后我想按页面id对其进行筛选

它的作用:只给出一行输出,其他行不显示

我希望我的解释有道理

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

|id |页码| 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;
  }
}
echo$content->display_content()

此处的测试页面:

有人对如何解决这个问题有什么建议吗?(请原谅我的英语很差,问题也很混乱,我希望这一切都有意义。)


好的,谢谢你的回答。我知道我不应该在类中使用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;
  }
}
公共功能显示内容(){
$this->article=$this->get_content_articles();
foreach($this->article作为$article)
$content=“”;
$content.='
[id:'.$article['id'].]

[标题:'.$article['title'].]
[内容:'.$article['content'].]
[日期:'.$article['date'].] '; 返回$content; } }
这是你的本意吗?无论如何,结果不会改变

$content = '<div class="blok">...';
编辑:正如@JoseAreas在评论中所说,在进入循环之前,您应该写:

$content = "";
为了避免引起注意

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

$content = "";

避免引起注意。

这是正确的方法,@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;
    }
公共功能显示内容(){
$this->article=$this->get_content_articles();
$content=“”;
foreach($this->article作为$article){
$content.='
[id:'.$article['id'].]

[标题:'.$article['title'].]
[内容:'.$article['content'].]
[日期:'.$article['date'].] '; } 返回$content; }
这是正确的方法,@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;
    }
公共功能显示内容(){
$this->article=$this->get_content_articles();
$content=“”;
foreach($this->article作为$article){
$content.='
[id:'.$article['id'].]

[标题:'.$article['title'].]
[内容:'.$article['content'].]
[日期:'.$article['date'].] '; } 返回$content; }
您是否验证了查询返回的行数?您需要将每个结果关联到
$content
-当前,每次运行
foreach
循环时,您都在过度写入它。尝试`$content.=..`。但它是第一次尝试编写类和函数。。那就开始避免使用函数吧。既然它现在可以正常工作了,还有什么我可以改进的吗?用mysqli(或PDO)代替mysql。大多数代码现在都正常了。您验证了查询返回的行数了吗?您需要将每个结果关联到
$content
-您当前在每次运行
foreach
循环时都写得太多了。尝试`$content.=..`。但它是第一次尝试编写类和函数。。那就开始避免使用函数吧。既然它现在可以正常工作了,还有什么我可以改进的吗?用mysqli(或PDO)代替mysql。most代码现在可以了。首先,在循环之前将其定义为空白,以避免警告。首先,在循环之前将其定义为空白,以避免警告。