Я вызываю информацию из нескольких таблиц, чтобы получить результаты как переменные в шаблоне. Функция шаблона не так уж и относительна, но получение массивов и правильных подсчетов - проблема, с которой я, похоже, борюсь. Если кто-то может проверить код, я, конечно, чего-то не вижу.Объединение нескольких массивов
Таблицы таблиц $ brandFieldArray содержат данные полей tableB. Например, если tableB имеет поле под названием images, поле в таблице B будет содержать путь для изображения, но tableFields будет содержать имя «изображение» в поле, а также тип поля, длины, ширины, качества, видимости и т. Д. изображения.
Я мог бы легко создавать поля без массива, но система может создавать поля, которые необходимо добавить в массив без необходимости редактировать код каждый раз.
Поэтому мне нужно вызвать поля из табличных полей и содержимого из таблицыB. Результат $ result from tableItems - убедиться, что я получаю правильный контент из tableB для правильного элемента, хранящегося в tableItems.
Помогите мне исправить этот код?
<?php
switch ($requiredVar) {
case "brand":
$brandFieldsArray = $dbA->query("select * from tableFields where type='X' and visible=1");
$result = $dbA->query("select bID from tableItems where iID = $x");
if ($dbA->count($result) != null) {
$thisrecord = $dbA->fetch($result);
$bID = $thisrecord["bID"];
}
else {
$bID = null;
}
$theBrandsArray = $dbA->query("select * from tableB where bID=$bID");
$bcCount = count($theBrandsArray);
$brandContentArray = null;
foreach ((array) $theBrandsArray as $brandContent) {
$allBrandFields = "";
if (is_array($brandFieldsArray)) {
$cc = count($brandFieldsArray);
foreach ($brandFieldsArray as $brField) {
$thisBrandField = $brField;
switch ($thisBrandField["fieldtype"]) {
case "TEXT":
case "TEXTAREA":
case "IMAGE":
if ($thisBrandField["fieldtype"] == "IMAGE") {
if ($brandContent["brandfield".$brField["fieldname"]] == "") {
$thisBrandField["content"] = $brfield["defaultimage"];
}
else {
$thisBrandField["content"] = $brandContent["brandfield".$brField["fieldname"]];
}
$thisField = generateImageVariables($brField["x"],$brField["y"]);
$thisBrandField["style"] = $thisField["style"];
$thisBrandField["stylefull"] = $thisField["stylefull"];
}
else {
$brandContent["brandfield".$brField["fieldname"]] = findCorrectLanguage($brandContent,"brandfield".$brField["fieldname"]);
if (retrieveOption("convertToBR") == 1 && retrieveOption("WYSIWYGEnabled") == 0) {
$thisBrandField["content"] = str_replace("\r\n","<br/>",$brandContent["brandfield".$brField["fieldname"]]);
}
else {
$thisBrandField["content"] = $brandContent["brandfield".$brField["fieldname"]];
}
}
break;
}
$brandContent[$brField["fieldname"]] = @$thisBrandField;
}
if (is_array($allBrandFields)) {
$brandContent["brandfields"] = $allBrandFields;
}
else {
$brandContent["brandfields"] = null;
}
}
$brandContentArray[] = $brandContent;
}
return (count($brandContentArray) == 1 ? $brandContentArray[0] : $brandContentArray);
}
$tpl->addVariable("brand",$brandContentArray);
break;
?>
Пожалуйста, объясните '$ dbA-> retrieveAllRecordsFromQuery()'. Я не знаком с этим звонком. Я сам использую mysqli. Он использует '$ query_result = $ db-> query()' и 'if ($ query_result-> num_rows> 0)'. – PHPglue
@PHPglue Честно говоря, я не могу объяснить это, поскольку я вытащил это из системы, где он делал аналогичный запрос, и просто использовал его повторно. Что бы это ни потребовалось, чтобы сделать эту работу прекрасной со мной. Запросы mysqli в порядке. – user3814045
Вы начинаете с добавления функции 'db() {return new mysqli ('host', 'username', 'password', 'database_name');}' на отдельной защищенной странице '.php'. Мы назовем его 'connect.php'. Затем вы включаете «folder/connect.php»; 'на страницу, с которой будете работать. Тогда это похоже на '$ db = db(); $ sel = $ db-> query ('SELECT * FROM table_name WHERE column_name = value'); if ($ sel-> num_rows> 0) {while ($ row = $ sel-> fetch_object()) {echo "