2013-04-02 71 views
-1

我們有一個腳本,該腳本已經從我們的開發人員提供,用於從我們的數據庫生成暢銷書列表,但是我們需要它在coldfusion中!將sql php腳本轉換爲coldfusion

是否有一個簡單的方法來轉換或將此需要完全重寫?

在此先感謝您的任何意見:-)

// // ---------- // Get Top Selling Products (by sku) // ---------- // 
    function CWgetBestSelling($max_products=5, $sub_ids=0) 
    { 
     $productQuery = ''; 
     $returnQuery = ''; 
     $idList = '0'; 
     $itemsToAdd = ''; 

     if (!is_numeric($idList[0])) { 
       $idList = '0'; 
     } 
     $q_productQuery = mysql_query(" 
     SELECT count(*) as prod_counter, 
     p.product_id, 
     p.product_name, 
     p.product_preview_description, 
     p.product_date_modified 
     FROM cw_products p 
     INNER JOIN cw_order_skus o 
     INNER JOIN cw_skus s 
     WHERE o.ordersku_sku = s.sku_id 
     AND s.sku_product_id = p.product_id 
     AND NOT p.product_on_web = 0 
     AND NOT p.product_archive = 1 
     AND NOT s.sku_on_web = 0 
     GROUP BY product_id 
     ORDER BY prod_counter DESC 
      LIMIT ".$max_products 
     ,$_ENV["request.cwapp"]["db_link"]); 
     $productQuery = array(); 
     while ($qd = mysql_fetch_assoc($q_productQuery)) { 
      $productQuery[] = $qd; 
     } 

    // add values to list 
     foreach ($productQuery as $values) { 
      $idList = $values['product_id'] . "," . $idList; 
     } 
     // if not enough results, fill in from sub_ids 
     if (count($productQuery) < $max_products) { 
       // number needed 
       $itemsToAdd = $max_products - count($productQuery); 
       for ($i = 1; $i <= $itemsToAdd; $i++) { 
        if (substr_count($sub_ids, ',') >= $i) { 
         $idListArray = explode(',', $sub_ids); 
         $idList .= "," . $idListArray[$i]; 
        } 
       } 
       $q_resultsQuery = mysql_query(" 
       SELECT 0 as prod_counter, 
       p.product_id, 
       p.product_name, 
       p.product_preview_description, 
       p.product_date_modified 
       FROM cw_products p 
       WHERE p.product_id in(".CWqueryParam($idList).") 
       AND NOT p.product_on_web = 0 
       AND NOT p.product_archive = 1 
       ORDER BY product_date_modified DESC 
       ",$_ENV["request.cwapp"]["db_link"]); 
     } else { 
      $q_resultsQuery = mysql_query(" 
       SELECT count(*) as prod_counter, 
       p.product_id, 
       p.product_name, 
       p.product_preview_description, 
       p.product_date_modified 
       FROM cw_products p 
       INNER JOIN cw_order_skus o 
       INNER JOIN cw_skus s 
       WHERE o.ordersku_sku = s.sku_id 
       AND s.sku_product_id = p.product_id 
       AND NOT p.product_on_web = 0 
       AND NOT p.product_archive = 1 
       AND NOT s.sku_on_web = 0 
       GROUP BY product_id 
       ORDER BY prod_counter DESC, product_date_modified 
      ",$_ENV["request.cwapp"]["db_link"]); 

     } 
    while ($qd = mysql_fetch_assoc($q_resultsQuery)) { 
      $returnQuery[] = $qd; 
     } 
     return $returnQuery; 

    } 
+2

您必須將代碼重寫'coldfusion' – Ander2

+1

你需要重寫代碼,或許你可以重複使用的唯一部分就是SQL查詢,但我從來沒有使用的ColdFusion。 – m4t1t0

+1

一個好的開始將是http://learncfinaweek.com/ – duncan

回答

6

代碼轉換問題不容易,因爲他們被視爲懶惰留長開。所以,下面是一些引用來幫助你入門。我不是PHP專業人員,但是快速瀏覽一下你的代碼後,我認爲這個鏈接列表會給你一個良好的開端。

在沒有做你的工作你,給喲利益ü有機會學習,我會提供一些示例,但不提供整個代碼,以便您瞭解您的PHP適用於CF.這也是標籤版本,而不是腳本版本。

<cffunction name = "CWgetBestSelling" ...> 
    <cfargument name = "max_products" default = "5" ...> 
    <cfargument ...> 

    <cfset var local.productQuery = ""> 
    <cfset var local.returnQuery = ""> 
    <cfset ...> 
    <cfset ...> 

    <cfquery name = "q_productQuery " datasource = "yourDatasource"> 
    SELECT 
     count(*) as prod_counter, 
     p.product_id, 
     p.product_name, 
     p.product_preview_description, 
     p.product_date_modified 
    FROM 
     cw_products p 
     INNER JOIN cw_order_skus o 
     INNER JOIN cw_skus s 
    WHERE 
      o.ordersku_sku = s.sku_id 
     AND s.sku_product_id = p.product_id 
     AND NOT p.product_on_web = 0 
     AND NOT p.product_archive = 1 
     AND NOT s.sku_on_web = 0 
    GROUP BY 
     product_id 
    ORDER BY 
     prod_counter DESC 
    LIMIT #arguments.max_products# 
    </cfquery> 

    ... 
    ... 
    ... 

    <cfreturn yourReturnVariable> 
</cffunction> 
+0

謝謝你,我只是需要一些指導作爲noob !我寧願找出如何去做,而不是讓其他人去做......非常感謝特拉維斯,我會閱讀...... – matthew