2

我正在使用 php PDO。我想将查询结果输出到 3 个不同的列中。总行数为 8。

它应该显示如下:

价值价值价值
价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值价值
价值价值

我只得到前 3 个值。

这是我的代码:

  <?php
   $subjects = Subject::getAllSubjects();

   $rows = 8;
   $rcounter = 1;
   $cols = 3;
   echo '<table>';

for($i = 0; $i < $rows / $cols; $i++) {
    foreach($subjects as $subject){
        echo '<tr>';

        for($j=0; $j < $cols && $rcounter <= $rows ;$j++, $rcounter++) {
            echo "<td>".$subject->getValueEncoded('subject_name')."</td>";
        }
        echo '</tr>';
    }
}
    echo '</table>';
  ?>

这是一个 var_dump($subjects)

array(8) { [0]=> object(Subject)#3 (1) { ["data":protected]=> array(3) { ["subject_id"]=> string(1) "8" [" subject_name"]=> string(7) "剧院" ["count"]=> string(0) "" } } [1]=> object(Subject)#4 (1) { ["data":protected]= > array(3) { ["subject_id"]=> string(1) "7" ["subject_name"]=> string(7) "Science" ["count"]=> string(0) "" } } [ 2]=> object(Subject)#5 (1) { ["data":protected]=> array(3) { ["subject_id"]=> string(1) "6" ["subject_name"]=> string (13) "Language Arts" ["count"]=> string(0) "" } } [3]=> object(Subject)#6 (1) { ["data":protected]=> array(3) { [“主题ID”]=> string(1) "5" ["subject_name"]=> string(10) "Literature" ["count"]=> string(0) "" } } [4]=> object(Subject)#7 (1) { ["data":protected]=> array(3) { ["subject_id"]=> string(1) "4" ["subject_name"]=> string(4) "Math" ["count" ]=> string(0) "" } } [5]=> object(Subject)#8 (1) { ["data":protected]=> array(3) { ["subject_id"]=> string(1 ) "3" ["subject_name"]=> string(14) "Social Studies" ["count"]=> string(0) "" } } [6]=> object(Subject)#9 (1) { [ "data":protected]=> array(3) { ["subject_id"]=> string(1) "2" ["subject_name"]=> string(10) "视觉艺术" ["count"]=> string(0) "" } } [7]=> object(Subject)#10 (1) { ["data":protected]=> array(3) { ["subject_id"]=> string (1) "1" ["subject_name"]=> string(3) "Art" ["count"]=> string(0) "" } } }

这是我的主题课:

require_once("DataObject.class.php");

class Subject extends DataObject {

    protected $data = array(
        "subject_id" => "",
        "subject_name" => "",
        "count" => ""
    );

        public function getCount() {
        $conn = parent::connect();
        $sql = "SELECT subject_name, count(*) as count FROM " . TBL_SUBJECT;

        try {
            $st = $conn->prepare( $sql );
            $st->execute();
            $subjects = array();
            foreach ( $st->fetchAll() as $row ) {
              $subjects[] = new subject( $row );
            }
            parent::disconnect( $conn);
            return $subjects;
          } catch (PDOException $e ) {
            parent::disconnect( $conn );
            die( "Query failed: " . $e->getMessage() );
          }
       }


        public function getAllSubjects() {
        $conn = parent::connect();
        $sql = "SELECT * FROM " . TBL_SUBJECT . " ORDER BY subject_id DESC";

        try {
            $st = $conn->prepare( $sql );
            $st->execute();
            $subjects = array();
            foreach ( $st->fetchAll() as $row ) {
              $subjects[] = new subject( $row );
            }
            parent::disconnect( $conn);
            return $subjects;
          } catch (PDOException $e ) {
            parent::disconnect( $conn );
            die( "Query failed: " . $e->getMessage() );
          }
       }
4

1 回答 1

0

尝试这个:

$subjects = Subject::getAllSubjects();

$rows = 8;
$rcounter = 1;
$cols = 3;

echo '<table>';

foreach($subjects as $subject){
    echo '<tr>';
    for($i = 0; $i < $rows ; $i++) {
        // echo "<td>".$subject->getValueEncoded('subject_name')."</td>";
        echo "<td>".$subject[$i]->getValueEncoded('subject_name')."</td>";
    }
    echo '</tr>';
}
echo '</table>';
于 2013-07-30T18:15:45.673 回答