У меня есть код здесь, который у меня есть чувство, можно сделать гораздо более эффективным. Я создаю базу данных каталога библиотек, и я ищу способ хранения нескольких столбцов (с несколькими записями), извлеченных из базы данных SQL, в один массив PHP. Это означало бы, что только один цикл foreach будет необходим в коде «view», чтобы распечатать результаты и сохранить их в таблице. У кого-нибудь из вас есть полезные идеи? :)PHP foreach выводит все четыре раза (mysql, sql, администрирование базы данных)
Мой код в его текущем состоянии ниже:
MODEL CODE:
$matches["loandates"] = array();
$matches["loanduedates"] = array();
$matches["itemnames"] = array();
$matches["itemauthors"] = array();
try { // if we do find an item, then we run this query against the database to get a list of all the current loans.
$results = $db->prepare("
SELECT il.loan_date, il.loan_duedate, i.item_name, i.item_author
FROM itemloan il
INNER JOIN libraryitem li
ON il.libraryItem_id = li.libraryItem_id
INNER JOIN item i
ON li.item_id = i.item_id
WHERE il.user_id = ?
ORDER BY il.loan_date asc
");
$results->bindParam(1,$userid); // puts user id value where the placeholder is. First value is character of placeholder, second value is variable we want to bind to placeholder).
$results->execute();
} catch (Exception $e) {
echo "Data could not be retrieved from the database.";
exit;
}
while ($row = $results->fetch(PDO::FETCH_ASSOC)) { // we loop through the loans one at a time, and add them to our matches variable
$matches["loandates"][] = $row["loan_date"];
$matches["loanduedates"][] = $row["loan_duedate"];
$matches["itemnames"][] = $row["item_name"];
$matches["itemauthors"][] = $row["item_author"];
}
return $matches;
}
VIEW КОД:
<table id="name">
<?php
foreach($user["itemnames"] as $itemname) {
echo "<tr><td id='radiocell'><input type='radio' name='libraryitemid' id='radio'></td><td class='user'>" . $itemname . "</td></tr>";
}
?>
</table>
<table id="author">
<?php
foreach($user["itemauthors"] as $itemauthor) {
echo "<tr><td class='user'>" . $itemauthor . "</td></tr>";
}
?>
</table>
<table id="date">
<?php
foreach($user["loandates"] as $loandate) {
$time = strtotime($loandate);
$myFormatForView = date("l d F Y", $time);
echo "<tr><td class='user'>" . $myFormatForView . "</td></tr>";
}
?>
</table>
<table id="duedate">
<?php
foreach($user["loanduedates"] as $loanduedate) {
$time = strtotime($loanduedate);
$myFormatForView = date("l d F Y", $time);
echo "<tr><td class='user'>" . $myFormatForView . "</td></tr>";
}
?>
</table>
я в конечном счете хочу только одна таблица с одной Еогеасп цикла, а не четыре таблицы с четырьмя Foreach петлями , Если ты получишь мой смысл.
Я был бы очень благодарен, если бы кто-нибудь мог помочь! Спасибо за кучи заранее!
С уважением,
Роберт, Лондон, Великобритания
P.S. результаты выбора базы данных (в коде модели) были сохранены в переменной с именем $ user. –