Jadi membuat asumsi bahwa satu-satunya elemen yang pernah terlihat adalah elemen terakhir karena apa yang Anda kembalikan sedang ditimpa setiap loop. Ada beberapa opsi untuk menyelesaikan ini. Yang paling sederhana adalah:
$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;
Namun ini tidak akan berfungsi dengan baik dengan html bootstrap Anda yang sebenarnya. Anda perlu memastikan bahwa jumlah kolomnya benar.
Anda akan membutuhkan sesuatu yang sedikit lebih intuitif
Menggunakan kode yang sebenarnya akan terlihat seperti
$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;
Sekarang dalam fungsi Anda, apa pun yang Anda dapat lakukan (ini bukan hal paling elegan yang pernah saya tulis tetapi harus menyelesaikan pekerjaan):
$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;}
}