Vì vậy, đưa ra giả định rằng phần tử duy nhất từng thấy là phần tử cuối cùng vì những gì bạn đang trả về đang bị ghi đè mỗi vòng lặp. Có một số tùy chọn để giải quyết vấn đề này. Đơn giản nhất là:
$stmt = $this->conn->prepare('SELECT * FROM books');
$stmt->execute();
$text = "";
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$book_id = $row['id'];
$book_title = $row['title'];
$book_image = $row['image'];
$book_amz = $row['amazon'];
$book_desc = $row['description'];
$book_rating = $row['rating'];
$book_date = $row['date'];
$book_author = $row['author'];
$book_categorie = $row['categorie'];
//String concatenation of text will
//give you one big string at the end to return.
$text .= "ID: '{$book_id}'";
}
return $text;
Tuy nhiên, điều này sẽ không hoạt động tốt với html bootstrap thực của bạn. Bạn cần đảm bảo rằng các cột được bổ sung đúng.
Bạn sẽ cần thứ gì đó trực quan hơn một chút
Sử dụng mã thực, nó sẽ trông giống như
$stmt = $this->conn->prepare('SELECT * FROM books');
$stmt->execute();
$bookEcho = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$bookEcho[] = '<div class="col-md-3">
<div class="thumbnail">
<span>' . $book_title . '</span>
<img src="' . $book_image . '">
<div class="book-options">
<span>Bewertung</span><br/>
' . $stars . '
<a href="books.php?id=' . $book_id . '" class="btn btn-read btn-block">Jetzt lesen</a>
</div>
</div>
</div>';
}
return $bookEcho;
Bây giờ trong chức năng của bạn, bạn có thể làm điều gì đó như thế nào (đây không phải là điều tao nhã nhất mà tôi từng viết nhưng nên hoàn thành công việc):
$cols = 4;
$colCount = 1;
foreach ($bookEcho as $book){
if($colCount == 0){//create a row}
echo $book;
$coolCount++;
if($colCount == 0){end a row}
if($colCount == 4){ $colCount = 0;}
}