Codeigniter:电子图书馆,显示作者的书籍

Codeigniter: E-Library, Display books with Authors

美好的一天Maam/Sir。我需要帮助显示所有书籍以及作者。由于有些书有 1 位作者,我需要将这些书与所有作者一起显示,但它只显示 1 位作者使用 group by 即使这本书有 2 位或更多位作者

The authors are tom and jerry but it only display tom

Table Authors Table Books

public function getbooks()
 {
   return $this->db->select('*')->from('tbl_books')
   ->join('tbl_section','tbl_books.section_id=tbl_section.section_id')
   ->join('tbl_authors','tbl_books.book_id=tbl_authors.book_id')
   ->group_by('tbl_authors.book_id')
    ->get()->result_array();

 }
View:
          <tbody>                              
             <?php foreach ($booklists as $value): ?>
            <tr class="odd gradeX">
            <td class="center"><?php echo $value['book_id'] ?></td>
            <td class="center"><?php echo $value['book_title'] ?></td>
            <td class="center"><?php echo $value['section_name'] ?></td>
            <td class="center"><?php echo $value['author_name'].','.$value['author_name'] ?> 
          </td>
            <td class="center"><?php echo $value['book_serial'] ?></td>
            <td class="center"><?php echo $value['book_qty'] ?></td>
            <td class="center">

            <a href="<?php echo base_url('Admin/Editbook/'.$value["book_id"]) ?>"><button 
           class="btn btn-primary"><i class="fa fa-edit "></i> Edit</button> 
            <a href="<?php echo base_url('Admin/Deletebook/'.$value["book_id"]) ?>">  <button 
           class="btn btn-danger"><i class="fa fa-trash"></i> Delete</button>
            </td>
            </tr>
            <?php endforeach ?>
            </tbody>

如果我没记错的话,当你 group_by 作者的 table book_id 你将只有一个书的结果,每本书只有一个作者姓名列。您可以使用 group_concat 直接附加作者姓名。

$this->db->select("*, group_concat(author_name separator ', ') as concat_names")
     ....
     ->group_by('tbl_authors.book_id')
     ->get()->result_array();

然后您可以使用 concat_names 检索作者姓名,如下所示:

 <td class="center"><?php echo $value['concat_names'] ?></td>

此外,强制性 PSA,您应该使用 htmlspecialchar 以避免 Cross-Site 脚本和以后的问题。

 <td class="center"><?php echo htmlspecialchar($value['concat_names']) ?></td>