动态表不显示正确的数组值

时间:2017-10-11 07:54:45

标签: php pdo

我目前正在使用php中的Table类。此类通过仅为列名提供值以及从所选数据中提供数组来创建动态表。我坚持以我想要的正确方式显示值。这就是它现在的样子:current table。我以为它可能是我的阵列。在数组中,所有值都是相反的:array。第二个是在第一个id之前。这是我的表类:

public function displayTable($columns, $values = 0)
    {

        $this->setTable("<table class='table table-striped table-hover'>
                        <thead class='thead-inverse'>
                          <tr>");



        foreach ($columns as $columnName) {
            $this->setTable($this->getTable(). "<th>".$columnName."</th>" );
        }



        $this->setTable($this->getTable(). "</tr></thead><tbody>");


        for ($x = 0; $x != sizeof($values); $x++) {
            $this->setTable($this->getTable(). "<tr>");

            foreach ($values as $value) {
                $this->setTable($this->getTable(). "<td>".$value[$x] ."</td>");
                var_dump($value);
            }

            $this->setTable($this->getTable(). "</tr>");
        }

        $this->setTable($this->getTable(). "</tbody></table>");

        var_dump($this->getTable());
    }

我尝试在我的选择查询中应用订单。这将摆脱我在阵列上的问题。在td中显示项目是个问题。 td不断创建,直到它没有值并开始一个新的数组,就像我在图片中显示的那样。那么无论如何要解决在表头td?

下显示这些值的问题

1 个答案:

答案 0 :(得分:0)

通过查看数组图像,您似乎使用fetchAll()从数据库中获取记录。

fetchAll()组合提供数字+关联数组。这就是为什么你的记录如下: -

array(
     'userId'=>2,
     0=>2,
     'userEmail'=>'some value',
     1=>'same mail id'
);

现在你只有两个theads # and email,但是第二个foreach在每次迭代后为你提供4 <td>,并且hense table失真。

解决方案: - 您必须使用fetchAll(PDO::FETCH_NUM)来解决您的问题,然后更改您的代码,如下所示: -

public function displayTable($columns, $values = 0){

    $this->setTable("<table class='table table-striped table-hover'><thead class='thead-inverse'><tr>");

    foreach ($columns as $columnName) {
        $this->setTable($this->getTable(). "<th>".$columnName."</th>" );
    }

    $this->setTable($this->getTable(). "</tr></thead><tbody>");


    for ($x = 0; $x != sizeof($values); $x++) {
        $this->setTable($this->getTable(). "<tr>");

        foreach ($values as $key=> $value) {
            $this->setTable($this->getTable(). "<td>".$value[$key] ."</td>");
        }
        $this->setTable($this->getTable(). "</tr>");
    }

    $this->setTable($this->getTable(). "</tbody></table>");

    var_dump($this->getTable());
}