1

ユーザーごとにデータを表示したい。ただし、テーブルごとおよびユーザーごとにすべてのデータが表示されます。だから私が達成しようとしているのは、そのユーザーのテーブルにすべてのデータを表示することです。ここに私のコードがあります

<?php foreach ($employee as $emp) { ?>

  <table id="employee-content">
     <h3 class="color-orange"><?php echo $emp['members']['username']; ?></h3>
        <tr>
          <td><p class="personal-management-content"><?php echo $emp['posts']['title']; ?></p></td>
          <td><p class="personal-management-content padding-left50" class="padding-left50"><?php echo $emp['posts']['title']; ?></p></td>
          <td><p class="personal-management-content padding-left50" class="padding-left50"><?php echo $emp['posts']['deadline']; ?></p></td>
        </tr>

<?php } ?>'

$employee の SQL クエリは次のとおりです。

* on controller 
   public function employee_management() {
        $posts = $this->Post->getPostByMember();
        $this->set("employee", $posts);
    }

* on model
    public function getPostByMember() {
        $post = "SELECT username, content, deadline, title FROM members INNER JOIN posts ON posts.member_id=members.id";
//        debug($user);
        $con = $this->getDataSource();
        $get = $con->fetchAll($post);
//        debug($get);
        return $get;
    }

そして print_r $employee

Array (
 [0] => Array (
   [members] => Array (
     [username] => admin )
   [posts] => Array (
     [content] => asdsadsad
     [deadline] => 2012-06-01
     [title] => sad ) ) 
 [1] => Array (
   [members] => Array (
     [username] => admin )
   [posts] => Array (
     [content] => asd
     [deadline] => 2012-06-20
     [title] => sad ) ) 
 [2] => Array (
   [members] => Array (
     [username] => admin )
   [posts] => Array (
     [content] => dasdw2
     [deadline] => 2012-06-19
     [title] => sdas ) ) 
 [3] => Array (
   [members] => Array (
     [username] => guest )
   [posts] => Array (
     [content] => s
     [deadline] => 2012-06-08
     [title] => wara ) )

出力はサンプルのスクリーンショットです http://i46.tinypic.com/209n56s.jpg

私が達成したいのは、たとえば、ユーザー「管理者」のすべてのタイトル、説明、締め切りが単一のボックスまたはに表示されることです。他のユーザーも同様です。

事前に感謝を助けてください

4

1 に答える 1

2

つまり...データベースの結果は現在、次のように構成されているようです。

  • 結果1
    • ユーザー名1
    • 役職
  • 結果2
    • ユーザー名1
    • 役職
  • 結果3
    • ユーザー名2

など。そして、ディスプレイを次のように表示する必要があります。

  • ユーザー名1
    • 役職
    • 役職
  • ユーザー名2
    • 役職

必要なことを実現する最も簡単な方法は、SELECTの結果から新しい配列を作成することだと思います。

<?php

$posts_by_emp=array();
foreach ($employee as $emp) {
  $posts_by_emp[$emp['members']['username']][]=array(
    'title' => $emp['posts']['title'];
    'descr' => $emp['posts']['title'];
    'deadline' => $emp['posts']['deadline']
  );
}

$hfmt = "<tr>\n    <th colspan='3' class='color-orange'>%s</th>\n  </tr>";
$bfmt = "<tr>\n"
      . "    <td class='personal-management-content'>%s</td>\n"
      . "    <td class='personal-management-content padding-left50'>%s</td>\n"
      . "    <td class='personal-management-content padding-left50'>%s</td>\n"
      . "  </tr>";

print "  <table id='employee-content'>";
foreach ($posts_by_emp as $username => $items) {
  // Print header
  printf($hfmt, $username);
  foreach ($items as $item) {
    // Print post
    printf($bfmt, $item['title'], $item['descr'], $item['deadline']);
  }
}
print "</table>\n";

私はあなたのデータを持っていないので、これはもちろんテストされていません。データベースの構造によっては、より簡単に解析できる別のSQLクエリを作成することで、より少ないPHPでこれを実行できる場合があります。

于 2012-06-27T13:56:15.730 に答える