2012-02-07 4 views
1

を印刷するにはどうすればpopurls.comのようなウェブサイトの何かを作りたいが、私は、MySQLデータベースに保存された静的データを使用します。 Btw私はPHP/MySQLを使用します。私は(ちょうどPopurlsに上のような)の周りの10のリンクを表示する各リストで
。私は20人のリストを持っているならば、その場合には、私は(各特定のリストについて)ループ「の」20を作るために必要があるでしょう。
私の質問は、 20 'をPHPのループに使うのではなく、20個のリストを印刷する方が良い方法があります。複数 - データに

答えて

0

forループまたはforeachループが正常に動作しますが、あなただけのループのための単一を作成し、配列の配列や文字列の配列にコンテンツをプッシュするならば、それははるかに少ないコーディングになります...あなたは、あなたが実際のコンテンツ(私たちは列categoryによってグループ化していると仮定してみたいものは何でも行うことができます私は、私がここで説明されて参照する文字列の配列を使用する例(およびクエリ使用します:。http://explainextended.com/2009/03/06/advanced-row-sampling/

$query = mysql_query([QUERY THAT GETS ALL ITEMS, BUT LIMITS BY EACH CATEGORY]) or die(mysql_error()); 
$all_items = array(); 
while($row=mysql_fetch_array($query)){ 
    if (!isset($all_items[$row['category']])){ //if it isn't created yet, make it an empty string 
     $all_items[$row['category']] = ""; 
    } 
    $all_items[$row['category']] .= "<li><a href='".$row['url']."'>".$row['title]."</a></li>"; //concatinate the new item to this list 
} 

ここでは、各セクションのHTMLブロックがarrに格納されている配列がありますカテゴリの名前をキーにしています。各ブロックを出力するには、ちょうど:

echo $all_items['category name']; 
0

は、データ入力に大きく依存しますが、私はこのような何かを想像することができます:あなたは、ちょうど2つのforeach文を必要とする

<?php 


$lists = arrray('list1', 'list2', 'list3'); 

foreach ($lists as $current) { 
    $data = fetch_data_from_mysql($current); 
    foreach ($data as $link) { 
     echo "<a href=\"$data\">Link</a>"; 
    } 
} 

function fetch_data_from_mysql($current) 
{ 
    $list_data = array(); 

    // do whatever is required to fetch the list data for item $current from MySQL 
    // and store the data in $list_data 

    return $list_data; 
} 
+0

もちろん、それは本当のことであればオブジェクト指向です;) –

0

を。あなたは、データベースからすべての情報を取得し、配列にそれを解析することができます

$list_query = mysql_query("SELECT * FROM lists";) 

while($list = mysql_fetch_array($list_query)) 
{ 
    echo "<h1>{$list['title']}</h1>"; 

    $query = mysql_query("SELECT * FROM entries WHERE list_id = {$list['id']}"); 

    while($entry = mysql_fetch_array($query)) 
    { 
     echo "- {$entry['name']}<br />"; 
    } 
} 
0

のようなもの:(あなたが書いたように)、これはこのようなことができますが、MySQLのテーブルからデータを取ると仮定すると、
array[<news type1>] = array(link1, link2, link3, etc); 
array[<news type2>] = array(link1, link2, link3, etc); 

ので

上、レイアウト上のあなたが

foreach ($newsCategory AS $categoryLinks) { 
    foreach ($categoryLinks AS $newsLink) { 
     <show the link and/or extra data> 
    } 
} 
0

ジャスト・ストアを使用することができます2次元配列のあなたのリンク。そうすれば、あなたは(リストを反復処理)1つの外側のループを作る必要があるでしょうし、1つの内部ループは、特定のリスト内のリンクを反復処理します。

$links = array(
    'science' => array('link1', 'link2', ...), 
    'sports' => array('link1', 'link2'), 
    // ... and so on 
); 
foreach ($links as $category => $urls) { 
    echo "Links in category: $category\n"; 
    foreach ($urls as $url) { 
    echo $url . "\n"; 
    } 
} 
関連する問題