2014-09-19 47 views
0

我從多個表中調用信息以給出結果作爲模板中的變量。模板函數並不是所有相關的,但獲得數組和計數正確的是我似乎正在努力解決的問題。如果有人可以請檢查代碼,我肯定錯過了一些東西。多個數組加入

的$ brandFieldArray tableFields包含tableB的字段的信息。例如,如果tableB有一個名爲images的字段,tableB中的字段將包含圖像的路徑,但tableFields將在字段中保存名稱「image」以及字段類型,長度,寬度,質量,可見等。的形象。

我可以很容易地創建域,但沒有一個數組,但該系統可以創建需要被添加到陣列中,而不必每次都編輯代碼字段。

所以我需要調用從tableFields領域和tableB的內容。 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; 
?> 
+0

請解釋'$ dbA-> retrieveAllRecordsFromQuery()'。我不熟悉那個電話。我自己使用'mysqli'。它使用'$ query_result = $ db-> query()'和'if($ query_result-> num_rows> 0)'。 – PHPglue 2014-09-19 02:05:33

+0

@PHPglue老實說,我無法解釋它,因爲我從系統中提取類似的查詢並重新使用它。做這件事情需要什麼,對我來說沒問題。 mysqli查詢很好。 – user3814045 2014-09-19 03:04:47

+0

您可以在單獨的安全'.php'頁面上添加'function db(){return new mysqli('host','username','password','database_name');}'。我們將它稱爲'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「

{$row->column_name}
{$row->another_column}
」;}} else {echo'No Rows';}'。 – PHPglue 2014-09-19 20:18:37

回答

0

我從來沒有在返回時看到過帶冒號的構造。也許你可以解釋。或者也許它修復了這個問題。

  return $brandContentArray[0] : $brandContentArray; 

刪除此行。休息之前,你不能從案子內退回。你有一個以下的命令行。

 // commented out: return $brandContentArray[0] : $brandContentArray; 
} 
$tpl->addVariable("brand",$brandContentArray); 
break; 

您的描述缺少重要信息:數組中必須返回哪些數據?

+0

來自tableFields和tableB的數據應該返回到數組中。應該根據字段名稱調用數據。以上並沒有解決它的問題,但可能是解決方案的一部分。 – user3814045 2014-09-19 13:08:13

+0

返回的數組必須使用哪種確切格式?在模板 - – 2014-09-19 13:49:04

+0

返回示例呼叫<:brand.fieldname.type:當量:#IF TEXT#> {brand.fieldname.content}或在這樣的循環\t \t \t \t \t <#LOOP:brand.extrafields#> 的<#if:brand.brandfields.content:NEQ:空白#> 的<#if:brand.brandfields.type:當量:TEXT#> {brand.brandfields。內容} user3814045 2014-09-19 14:30:21

0

經過進一步尋找到的結構設置與我相信這是使我想它的方向這一工作沒有真正的路表的方式。所以我決定只進行單獨的呼叫,並將多個陣列留在它之外。

謝謝大家的幫助。