#php #json
#php #json
Вопрос:
Я надеюсь, что вы всегда здоровы. У меня возникли проблемы с созданием массива (json) из 2 таблиц. таблица, которая у меня есть, выглядит следующим образом. app_produk_ready эта таблица 1
app_produk_ready_img эта таблица 2
php-код, который я сделал
<?php
require_once('connection.php');
$response = array();
$query = mysqli_query($CON,"SELECT * FROM app_produk_ready");
while($row = mysqli_fetch_array($query)){
$id=(int)$row['id'];
$kain=$row['kain'];
$seri=$row['seri'];
$harga=(int)$row['harga'];
$stok=$row['stok'];
$data['id']=$id;
$data['kain']=$kain;
$data['seri']=$seri;
$data['harga']=$harga;
$data['stok']=$stok;
$tableImage=mysqli_query($CON,"SELECT image FROM app_produk_ready_img WHERE id=$id");
while($img = mysqli_fetch_array($tableImage)){
$gambar=$img['image'];
$data['images'][]=$gambar;
}
$response[] = $data;
}
echo json_encode($response);
mysqli_close($CON);
?>
Но результаты, которые я получаю на изображении, фактически накапливаются в цикле. примеры неправильных результатов
[
{
id: 1,
kain: "Katun Jepang",
seri: "SR01",
harga: 55000,
stok: "100",
images: [
"https://sweetroommedan.com/app2/img_ready/1-1.jpg",
"https://sweetroommedan.com/app2/img_ready/1-2.jpg",
"https://sweetroommedan.com/app2/img_ready/1-3.jpg"
]
},
{
id: 2,
kain: "Katun Jepang",
seri: "SR02",
harga: 55000,
stok: "100",
images: [
"https://sweetroommedan.com/app2/img_ready/1-1.jpg",
"https://sweetroommedan.com/app2/img_ready/1-2.jpg",
"https://sweetroommedan.com/app2/img_ready/1-3.jpg",
"https://sweetroommedan.com/app2/img_ready/2-1.jpg",
"https://sweetroommedan.com/app2/img_ready/2-2.jpg"
]
},
]
То, что я хочу, должно быть
[
{
id: 1,
kain: "Katun Jepang",
seri: "SR01",
harga: 55000,
stok: "100",
images: [
"https://sweetroommedan.com/app2/img_ready/1-1.jpg",
"https://sweetroommedan.com/app2/img_ready/1-2.jpg",
"https://sweetroommedan.com/app2/img_ready/1-3.jpg"
]
},
{
id: 2,
kain: "Katun Jepang",
seri: "SR02",
harga: 55000,
stok: "100",
images: [
"https://sweetroommedan.com/app2/img_ready/2-1.jpg",
"https://sweetroommedan.com/app2/img_ready/2-2.jpg"
]
},
{
id: 3,
kain: "Katun Jepang",
seri: "SR03",
harga: 55000,
stok: "100",
images: [
"https://sweetroommedan.com/app2/img_ready/3-1.jpg",
"https://sweetroommedan.com/app2/img_ready/3-2.jpg",
"https://sweetroommedan.com/app2/img_ready/3-3.jpg",
"https://sweetroommedan.com/app2/img_ready/3-4.jpg"
]
}
]
Что мне нужно сделать, чтобы получить ожидаемые результаты? спасибо за помощь.
Комментарии:
1.
$data['images'] = [];
перед внутреннимwhile
циклом?2. Да, я хочу зациклить изображение на таблице 2 в таблице 1 по идентификатору. Любой метод с 1 запросом?
Ответ №1:
Я бы попытался сбросить массив данных для каждой новой строки из внешнего запроса.
т.е.
$response = array();
$query = mysqli_query($CON,"SELECT * FROM app_produk_ready");
while($row = mysqli_fetch_array($query)){
data=array();
(...)
Ваша проблема в том, что вы добавляете данные в массив data [‘images’], даже не сбрасывая его.
Ответ №2:
Почему вы используете два запроса по отдельности? Вы можете использовать внутреннее соединение
SELECT *
FROM table1
INNER JOIN table2
ON table1.primaryKey=table2.table1Id
Смотрите: https://www.w3schools.com/sql/sql_join_inner.asp для получения более подробной информации
Комментарии:
1. спасибо за предложение, но ранее я использовал один запрос, но он работает не так, как хотелось бы, потому что изображение в таблице 2 содержит много данных.