2012-03-17 2 views
1

私はAJAXでクエリを実行して、自分のページに表示する画像情報/パスのリストを取得しました。私のテーブルでは、ブール値の列mainがあり、イメージがメインイメージであるかどうかを示し、他のすべてのイメージよりも上に表示されます。x = trueの場合<cfloop>の最初の配列位置に項目を移動

私はAJAX経由でクエリ結果にアクセスしているので、JavaScriptの関数が返されたデータをループして、<img>タグを構築するページに戻す前に、データの配列を作成する必要があります。

mainブール値を認識し、その画像をページの最初の位置に移動するには、CFCまたはJavaScriptループを取得するにはどうすればよいですか?ここで

は私のCFCです:

<cfquery name="project_images"> 
    select path, title, alt, main from tbl_images where pid = #projects.pid#; 
</cfquery> 
    <cfloop query="project_images"> 
    <cfset imgStruct = structNew()> 
    <cfset imgStruct["path"] = path> 
    <cfset imgStruct["alt"] = alt> 
    <cfset imgStruct["title"] = title> 
    <cfset imgStruct["main"] = main> 
    <cfset ArrayAppend(imgArray, imgStruct)> 
</cfloop> 
<cfset local.response["images"] = #imgArray#> 
<cfreturn local.response>  

そして、私のjQueryの機能:

$('.project_class').click(function(e){ 
    e.preventDefault(); 
    var theclass = $(this).attr('id'); 
    var cat = 'planning'; 

    $.getJSON("../cfc/projects.cfc?returnFormat=json&method=getProjects", 
     {"theclass":theclass, "cat":cat}, 
     function(response){ 
      $('#portfolio_item').html(response.html); 
      var imageData = response.images; 
      $.each(imageData, function(i, item) { 
       $('#portfolio_item').append('<img src="..' + item.path + '" />'); 
      }); 
     }); 
}); 

答えて

3

1つのオプションは、あなたのSQL内の画像を並べ替えています。 mainレコードに他のレコードより高いソート順を割り当てるには、CASEステートメントを使用します。

SELECT CASE WHEN main = 1 THEN 0 ELSE 1 END AS SortNum 
      , path 
      , title 
      , alt 
      , main 
    FROM tbl_images 
    WHERE pid = <cfqueryparam value="#projects.pid#" cfsqltype="cf_sql_integer"> 
    ORDER BY SortNum 

それとも、ループ内mainフラグをチェックし、フラグがtrueのときarrayPrependの代わりarrayAppendを使用することができます。

+0

SQLは素晴らしいです!ありがとうございました。それは実際に私がそれを処理したいと思った方法です、私はちょうど方法を確信していませんでした。そして、 ''タグを覚えておいてください。私はコードをプロダクションに移すときに常にそれらを使用します。再度、感謝します! – Ofeargall

関連する問題