Ich habe ein Problem, einen Weg zu finden, das MySQL-Ergebnis in ein Array zurückzugeben, das die Daten aus der Anweisung für jede Zeile und Spalte enthält.Wie drucke ich mehrere Zeilen mit mehreren Spalten in einer Vorlage?
controller.class.php:
class Controller {
private $template;
private $view;
private $data;
public function __construct() {
$this->view = new View();
$this->data = new Model();
}
public function display() {
$this->view->setTemplate();
$this->view->setContent("title", "Songs");
$this->view->setContent("content", $this->data->getAllDataFromSongs());
$this->view->setContent("footer", "© My name is Jeff\n");
return $this->view->parseTemplate();
}
}
model.class.php:
class Model {
public $db_connection = null;
public function __construct() {
$this->openDatabaseConnection();
}
private function openDatabaseConnection() {
$this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($this->db_connection->connect_error) {
die('Connect Error (' . $this->db_connection->connect_errno . ') '
. $this->db_connection->connect_error);
}
}
public function getAllDataFromSongs() {
$query = "SELECT * FROM songs";
$row_content = array();
if ($result = $this->db_connection->query($query)){
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
array_push($row_content, $row['id']);
array_push($row_content, $row['artist']);
array_push($row_content, $row['song']);
array_push($row_content, $row['year']);
}
$result->free();
return $row_content;
}
else
echo 'No results';
}
}
view.class.php:
class View {
private $path = 'templates';
private $template;
private $content = array();
public function setContent($key, $value){
$this->content[$key] = $value;
}
public function setTemplate($template = 'default') {
$this->template = $this->path . DIRECTORY_SEPARATOR . $template . '.tpl.php';
}
public function parseTemplate() {
if (file_exists($this->template)) {
ob_start();
require_once('templates/header.tpl.php');
include_once $this->template;
require_once('templates/footer.tpl.php');
$output = ob_get_contents();
ob_end_clean();
return $output;
}
else{
return "Can't find ".$this->template." Template";
}
}
}
default.tpl.php:
<table>
<tr>
<th>ID</th>
<th>artist</th>
<th>song</th>
<th>year</th>
</tr>
<tr>
<?php
foreach ($this->content['content'] as $con){
echo '<td>'. $con . '</td>';
}
?>
</tr>
</table>
<br>
<?php echo $this->content['footer']; ?>
Es ist nicht der gesamte Code, aber es sollte Ihnen zeigen, was ich versuche. Das Problem, das ich jetzt habe, ist, dass das Ergebnis von getAllDataFromSongs() ein Array mit allen Daten hintereinander ist. Ich kann sie nicht in einer Tabelle trennen.
Dies ist die Ausgabe:
Array (
[0] => 1 [1] => Artist 1 [2] => Song 1 [3] => Year 1
[4] => 2 [5] => Artist 2 [6] => Song 2 [7] => Year 2
[8] => 3 [9] => Artist 3 [10] => Song 3 [11] => Year 3
[12] => 4 [13] => Artist 4 [14] => Song 4 [15] => Year 4
[16] => 5 [17] => Artist 5[18] => Song 5 [19] => Year 5
)
ID artist song year
1 Artist 1Song 1Year 12Artist 2Song 2Year 2 3Artist 3Song 3Year 3...
ich Ihnen erzählen kann hoffen, was ich versuche zu erklären ..
Ich habe die erste Lösung versucht und ich bekomme jetzt ein Array mit Arrays für jede Zeile innerhalb ... Wie kann ich die Tabelle in meiner default.tpl.php Datei holen? – Alex
@Alex eine verschachtelte foreach zu einer Vorlage hinzufügen? –