0

会社のテーブルから会社名を表示してから、別のテーブルからニュースをループアウトしようとしています。2 つのテーブルが結合されます。つまり、結合内の 1 つのテーブルから 1 つの行を選択し、結合内の他のテーブルからデータをループアウトしたいということです。これは可能ですか?以下のコードでは、ループ内のニュース テーブルに 3 つの投稿のうち 2 つしか表示されません。

ありがとう!

$sql = "SELECT 
            newID, newTitle, newSummary, newDate,
            comID, comName, comImageThumb
        FROM 
            tblNews a RIGHT JOIN tblCompanies b
        ON a.newCompanyID = b.comID
        ORDER BY newDate DESC";

// Get company name and display
$companyData = mysql_fetch_assoc($result);
$comName = $companyData['comName'];

echo "<a href='#' class='name'>$comName</a>";

// Looping news
while($news = mysql_fetch_assoc($result)) {
    // Display news posts
    $newTitle = $news['newTitle'];

    echo $newTitle;
}
4

4 に答える 4

0

最も簡単な解決策は、おそらく最初の反復にいるかどうかを追跡することです。

// query company name and news entries here

$firstRow = true;
while($news = mysql_fetch_assoc($result)) {
    if ($firstRow) { echo $news['comName']; }
    $firstRow = false;

    echo $news['newTitle'];
}

mysql_data_seek(0)また、現在のコードを保持し、最初に会社名を抽出した後にカーソルをリセットするために使用することもできます。

mysql_*ちなみに、関数はもう使用しないでください。代わりにPDOを使用してください。

于 2013-02-25T11:56:11.640 に答える
0

while ループ内にすべてを入れて、試してください:

while($news = mysql_fetch_assoc($result)) {
// Get company name and display

$comName = $news ['comName'];

echo "<a href='#' class='name'>$comName</a>";

// Looping news

    // Display news posts
    $newTitle[] = $news['newTitle'];

    echo $newTitle;
}
于 2013-02-25T11:53:30.083 に答える
0

GROUP_CONCAT詳細については、mysql を参照してください。

于 2013-02-25T11:54:20.860 に答える
0

フェッチ操作をループの最後に移動します。

$companyData = mysql_fetch_assoc($result);
$comName = $companyData['comName'];

echo "<a href='#' class='name'>$comName</a>";

    // you've already fetched a news item....

$news=$companyData;
do {
   $newTitle = $news['newTitle'];
   echo $newTitle;
} while ($news=mysql_fetch_assoc($result));
于 2013-02-25T12:41:30.260 に答える