Я написал код в sql, так как просто хочу понять концепцию. Когда это будет сделано, я изменю его на sqli / pdo. поэтому любезно игнорируйте метод sql и plz помогите мне в решении проблемы
Мне нужен список всех продавцов на основе конкретного catid. для этого у меня есть 2 таблицы подкатегории и VendorSubCat. Я пытаюсь связать эти две таблицы, сначала выбирая subcatid (т. е. идентификатор из таблицы подкатегорий) на основе catid, а затем отображая имя поставщика в соответствии с subcatid (из таблицы VendorSubCat), выбранным из предыдущей таблицы.
Подкатегория просмотра таблицы
id subcatname subcatdesc catname catid
Настольный просмотр VendorSubCat
vendorname vendorid subcatid
Код
<?php ob_start(); require_once('config.php'); $catid = $_REQUEST['catid']; $sql1 = "SELECT * FROM subcategory where catid='" . $catid . "'"; $result1 = mysql_query($sql1); while ($row = mysql_fetch_array($result1)) { $myid = $row['id']; if (sql1 != '0') { $productt = mysql_query("select * from VendorSubCat where id = '" . $myid . "' "); $posts = array(); if (mysql_num_rows($productt)) { while ($post = mysql_fetch_assoc($productt)) { $posts[] = $post; } header('Content-type: application/json'); echo stripslashes(json_encode(array('list' => $posts))); } else { header('Content-type: application/json'); echo stripslashes(json_encode(array('list' => 'No productlist'))); } } } ?>
Хотя код работает нормально, но отображает результат в другом массиве. он показывает результат, подобный этому
{"list":[{"id":"1","vendorname":"Marzoogah","vendorid":"1","subcatid":"4"}]}{"list":[{"id":"2","vendorname":"Zee Zone","vendorid":"2","subcatid":"4"}]}{"list":[{"id":"3","vendorname":"Zee Zone","vendorid":"2","subcatid":"7"}]}{"list":[{"id":"4","vendorname":"????? ????????","vendorid":"3","subcatid":"4"}]}
Я хочу поместить весь результат в один массив, т. Е. Весь список должен попадать под один список. «list» не должен отображаться каждый раз, когда отображается новая строка. Любая помощь будет оценена
Вам не нужно немедленно повторять результаты:
echo stripslashes(json_encode(array('list' => $posts)));
Вместо этого, собрать все в один массив:
$results = array(); //Your code $results[] = array('list' => $posts); //... $results[] = array('list' => 'No product list'); //... //And echo just one time in the end: echo stripslashes(json_encode($results);
или что-то вроде этого для слияния:
$results = array(); //Your code $results = $results + $posts; //... $results = 'No product list'; //... //And echo just one time in the end: echo stripslashes(json_encode(array('list' => $results)));
Кроме того, вы можете выполнить запрос базы данных без рекурсивных запросов;
Что-то вроде:
SELECT vsc.* FROM VendorSubCat vsc INNER JOIN subcategory sc ON vsc.id=sc.id WHERE sc.cat_id = 15