Вывод на страницу из разных таблиц базы

101
31 декабря 2021, 22:40

В базе MySQL есть 3 таблицы (TABLE1, TABLE2, TABLE3)

TABLE1
id(int)  group(int)  position(int)  type(int)  text(text)

TABLE2
id(int)  group(int)  position(int)  type(int)  text(text)  color(int)  comment(text)

TABLE3
id(int)  group(int)  position(int)  type(int)  text(text)  status(text)

У всех трех таблиц есть 2 одинаковых столбца: group(int) и position(int). Данные в этих столбцах могут быть одинаковые и разные.Задача сделать запрос к базе так, чтобы на странице вывести все строки из всех таблиц у которых: group(int) = 1 и предварительно отсортировав их по position(int).

type(int) - это тип блока в зависимости от вида таблицы. Потому что в таблицах разное количество столбцов, а значит при выводе должны быть разные html-шаблоны (для первой таблицы это 5 переменных будет вида

id: значение

group: значение

position: значение

type: значение

text: значение

- для второй таблицы - второй тип шаблона и уже 7, для 3й - 5 штук. И, насколько я понимаю, проверив через if какой тип - выбираем тип шаблона и подставляем туда эти значения и выводим (возможно это не так делается). И важно именно с сортировкой по position(int) чтобы вывести информацию.

Вот с такой задачей не могу справиться. Просто мозг сейчас взорвется. У меня немного другие названия, но я упростил всё для наглядности. Помогите пожалуйста.

Answer 1
<?php
$conn1 = new mysqli("localhost", "my_user", "my_password", "world");
/* проверка соединения */
if ($mysqli->connect_errno) {
    printf("Не удалось подключиться: %s\n", $conn1->connect_error);
    exit();
}
$set="1";
$query1 = "SELECT * FROM table1 WHERE group = ".$set." ";
$result = $conn1->query($query1);
while($row2 = mysqli_fetch_assoc($result))
{
$arr2[]=$row2;
}
$query2 = "SELECT * FROM table2 WHERE group = ".$set." ";
$result2 = $conn1->query($query2);
while($row21 = mysqli_fetch_assoc($result2))
{
$arr3[]=$row21;
}
$query3 = "SELECT * FROM table3 WHERE group = ".$set." ";
$result3 = $conn1->query($query3);
while($row01 = mysqli_fetch_assoc($result3))
{
$arr4[]=$row01;
}
$result = array_merge ($arr2, $arr3, $arr4);
$row=count($result);
echo '<table border="1">';
for ($tr=0; $tr<$row; $tr++){
echo'<tr>';
echo '<td>'.$result[$tr]["id"].'<td>'.$result[$tr]["group"].'<td>'.$result[$tr]["position"].'<td>'.$result[$tr]["text"].'</td>';
echo '</tr>';
}
echo '</table>';
?>
READ ALSO
Почему не точно выполняется условие?

Почему не точно выполняется условие?

Обычный код для заполнения строки он должен заполнять строку 7 символами (рандомными) но иногда бывает такое что выдает и 3 и 2 символа в место...

207
Как сделать необязательный параметр в Action Yii 2

Как сделать необязательный параметр в Action Yii 2

Помогите пожалуйста, нужно реализовать выполнение экшена с возможность не заполнения параметра ($url) чтобы был доступен такой адрес, site/news/,...

175
Часовой пояс php перевод времени

Часовой пояс php перевод времени

На сайте вывожу время публикации 16:12, как определить часовой пояс пользователя, который зашел и время конвертировать под его, например зашел...

61
Получить значения полей с класа, который екстендится, в базовом

Получить значения полей с класа, который екстендится, в базовом

У меня есть базовый класс BaseCommand примерно такого вида:

160