В моей базе данных три таблицы:
Предметы
- itemNumber (PK)
- название
- издание
- предмет
Доноры
- donorNumber (PK)
- donorName
- donorDepartment
Штрих-коды
- barcodeNumber (PK)
- дата добавлена
- donorNumber (FK)
- itemNumber (FK)
В принципе, элемент может иметь много штрих-кодов, и это моя проблема, я пытаюсь отобразить такую информацию на столе:
Заголовок: Заголовок предмета
Издание: 2-е издание
Тема: Компьютерное программирование
Имя донора: Джон Доу
Отдел доноров: Технология
Штрих-коды: 001, добавлено: 27.04.18
456, добавлено: 29.0418
734, добавлено: 29.0418
976, добавлено: 30.04.18
Однако, мой код дает мне это:
Заголовок: Заголовок пункта 1
Издание 2-е издание
Тема: Компьютерное программирование
Имя донора: Джон Доу
Отдел доноров: Технология
Штрих-коды: 001
Добавлено: 27/04/18
Заголовок: Заголовок предмета 1
Издание: 2-е издание
Тема: Компьютерное программирование
Имя донора: Джон Доу
Отдел доноров: Технология
Штрих-коды: 456
Добавлено: 29/04/18
Заголовок: Заголовок предмета 1
Издание: 2-е издание
Тема: Компьютерное программирование
Имя донора: Джон Доу
Отдел доноров: Технология
Штрих-коды: 734
Добавлено: 29/04/18
... и так далее.
Как я могу достичь своей цели? Во второй строке таблицы я хочу отобразить второй элемент вместо первого элемента со вторым штрих-кодом. Вот мой код:
<?php
require "dbinfo.php";
//connects to database, returns $db ($db=mysqli_connect($host, $user, $password) or die (mysqli_error()); )
$sql="SELECT Items.title, Items.edition, Items.subject, Items.course, Items.image, Barcodes.barcodeNumber, Barcodes.dateAdded, Donors.donorName, Donors.department FROM Barcodes INNER JOIN Items ON Barcodes.itemNumber = Items.itemNumber INNER JOIN Donors ON Barcodes.donorNumber = Donors.donorNumber ORDER BY title ASC";
$result = mysqli_query($db, $sql) or die (mysqli_error($db));
while ($row=mysqli_fetch_array($result)){
$itemNumber = $row["itemNumber"];
$title = $row["title"];
$edition = $row["edition"];
$donorNumber = $row["donorNumber"];
$donorName = $row["donorName"];
$barcodeNumber = $row["barcodeNumber"];
$dateAdded = $row["dateAdded"];
echo "<table cellpadding = '10'>";
echo"<tr align='left'>";
echo "<td>$title";
echo "Edition: $edition";
echo "Subject: $subject";
echo "Course: $course";
echo "Department: $department";
echo "Donor: $donorName";
echo "Barcodes: $barcodeNumber ";
echo "Added on: $dateAdded</td>";
}
?>
</body>
</html>
Конечно, я отображаю информацию на столе, но я впервые публикую здесь, и я не знаю, как показать свои теги.
Моей первой мыслью было создание второго запроса для получения только штрих-кодов, соответствующих значениям $ itemNumber, полученным в каждой строке:
$sql1 = "SELECT barcodeNumber FROM Barcodes WHERE Barcodes.itemNumber = $itemNumber";
result1 = mysqli_query($db, $sql1) or die (mysqli_error($db));
, а затем получить штрих-коды с оператором while
while ($row=mysqli_fetch_array($result1)){
$barcodeNumber = $row["barcodeNumber"];
echo $barcodeNumber;
echo"<br />";
}
Но так как это не сработало, я прекратил попытки извлекать значения с добавленной датой таким образом.
Любой совет будет с благодарностью.
Спасибо!