У меня проблемы со следующим кодом.Я получаю дубликаты записей контента в базе данных.Я думаю, что это как-то связано с циклом for, но я не знаю, как можно это исправить.
SQL-запрос:
public function getConfRoomList()
{
$arr = array();
$statement = $this->conn->prepare("SELECT id, name, roomnbr, location, seats, utilities from moterom order by name ASC");
$statement->bind_result($id, $name, $roomnbr, $location, $seats, $utilities);
$statement->execute();
while ($statement->fetch()) {
$arr[] = [ "id" => $id, "name" => $name, "roomnbr" => $roomnbr, "location" => $location, "seats" => $seats, "utilities" => $utilities];
}
$statement->close();
return $arr;
}
public function joinDevRoom()
{
$arr = array();
$statement = $this->conn->prepare("SELECT r.name,GROUP_CONCAT(u.device) FROM moterom r LEFT JOIN utilities u ON FIND_IN_SET(u.id,r.utilities)>0 GROUP BY r.id");
$statement->bind_result($id, $utilities);
$statement->execute();
while ($statement->fetch()) {
$utilities = str_replace(',','<br />',$utilities);
$arr[] = [ "id" => $id, "utilities" => $utilities];
}
$statement->close();
return $arr;
}
public function getDeviceList()
{
$arr = array();
$statement = $this->conn->prepare("SELECT id, device, model, img, supplier from utilities order by device ASC");
$statement->bind_result($id, $device, $model, $img, $supplier);
$statement->execute();
while ($statement->fetch()) {
$arr[] = [ "id" => $id, "device" => $device, "model" => $model, "img" => $img, "supplier" => $supplier];
}
$statement->close();
return $arr;
}
Содержание:
<?php
require_once("db.php");
$arr = $conn->getConfRoomList();
$join = $conn->joinDevRoom();
$dev = $conn->getDeviceList();
?>
<div class="add_dev_header">Møterom</div>
<?php
if (!empty($arr)) { ?>
<table border='1'>
<tr>
<th>Conference room</th>
<th>Room number</th>
<th>Location</th>
<th>Number of seats</th>
<th>Available utilities</th>
<th>Edit</th>
<th>Delete</th>
</tr>
<?php for( $i=0; $i < count($arr); $i++) {
for( $u=0; $u < count($join); $u++) {
print_r ("<tr>
<td>".$arr[$i]['name']."</td>
<td>".$arr[$i]['roomnbr']."</td>
<td>".$arr[$i]['location']."</td>
<td>".$arr[$i]['seats']."</td>
<td>".$join[$u]['utilities']."</td>
<td><a href='?p=editconfroomv2&id=".$arr[$i]['id']."'>Edit</a></td>
<td><a href='?p=deleteconfroomdb&id=".$arr[$i]['id']."' class='delete'>Delete</a></td>
</tr>"); } } ?>
</table>
<?php } else {
echo "<div id='db_empty'>Database is empty...<br>
You can be the first to <a href='?p=addconfroom'>register a conference room</a>.</div>";
}
?>
У меня есть две комнаты и одна утилита в базах данных, и напечатанный результат выглядит примерно так:
Комната 1 |Комната № 1 |Расположение 1 |Мест 23 |Gear 1 |Редактировать |Удалить
Номер 1 |Комната № 1 |Расположение 1 |Мест 23 |Gear 1 |Редактировать |Удалить
Номер 2 |Комната № 2 |Расположение 2 |Мест 6 |Gear 1 |Редактировать |Удалить
Номер 2 |Комната № 2 |Расположение 2 |Мест 6 |Gear 1 |Редактировать |Удалить