2011-12-23 3 views
0

質問:どのように私のクエリを自分の関数と結びつけることができますか?リストを印刷したいのですが、どのように接続するのか分かりません。また、私は正しく以下の "エントリ"を使用していますか?PHP - クエリと関数とwhile節?

/* data handling */ 
$result = mysql_query("SELECT * FROM Items LEFT JOIN Categories on Categories.CategoryID = Items.FK_CategoryID WHERE Items.FK_UserID = $_SESSION[user_id] ORDER BY CategorySort, CategoryName ASC, ItemSort, ItemTitle"); 

/* output logic */ 
function render_list($ItemTitle, array $entries) 
{ 
    echo '<ul><li>' . $ItemTitle . '<ul>'; 
    foreach($entries as $entry) 
    { 
     echo '<li>' . $entry['ItemID'] . '</li>'; 
    } 
    echo '</ul></li></ul>'; 
} 

render_list(); 

while節を使用する必要がありますか?

// loop through topics 
    while($row = mysql_fetch_array($result)) { 
     render_list; 
    } 

答えて

1

ええ、foreachループをそのwhileループに置き換えてください。関数定義から "type"(array)を取り除くと、疎結合のPHP言語で行う必要はありません。ここにあなたが持っているコードのリワークです:

/* output logic */ 
function render_list($ItemTitle, $entries) 
{ 
    echo '<ul><li>' . $ItemTitle . '<ul>'; 
    while($entry = mysql_fetch_array($entries)) 
    { 
     echo '<li>' . $entry['ItemID'] . '</li>'; 
    } 
    echo '</ul></li></ul>'; 
} 

$result = mysql_query("SELECT * FROM Items LEFT JOIN Categories on Categories.CategoryID = Items.FK_CategoryID WHERE Items.FK_UserID = $_SESSION[user_id] ORDER BY CategorySort, CategoryName ASC, ItemSort, ItemTitle"); 

render_list('My Title', $result); 
+0

こんにちはシュレッダー:投稿ありがとうございます。私の出力は、項目が下にあるカテゴリであると考えられ、複数のカテゴリを出力することになっています(最終結果は一連の順序付けられていないリストです)。指定したロジックは、すべての項目を含む単一の順序付けられていないリストになります。調整する方法はありますか? – webdude77

+0

@ webdude77カテゴリを格納する文字列を追加し、次のループの繰り返しで、新しいレコードが同じカテゴリかどうかを確認します。私はすぐにそれを反映するためにコードを更新します、私は今tho、GTGすることはできません。 GL –