0

データベース内の記事を表示するページを作成しようとしていますが、カテゴリ別に整理する必要があります。

カテゴリはcategories、フィールドとしてIDとカテゴリを持つテーブルに保存されます/記事はarticles、記事に関するさまざまな情報のために、さまざまなフィールドを持つテーブルに保存されます。

私が持っているコード:

<?php

$sql = "SELECT * FROM `categories`";
$query = mysql_query($sql) or die("Could not get CATEGORIES ".mysql_error());

while($category = mysql_fetch_array($query)){

$cat = $category['category'];

$sql = "SELECT * FROM `articles` WHERE `category` = '$cat'";
$query = mysql_query($sql) or die(mysql_error());
$articles = mysql_fetch_array($query);

$size = count($articles);

echo $size;

}   

?>

私が期待する結果は、各カテゴリのリストであり、各カテゴリの下に、そのカテゴリの記事の数が表示されます。

いくつかの助けをいただければ幸いです。

ありがとう

4

2 に答える 2

1

あなたがやりたいことは、はるかに簡単でパフォーマンスが高いと思います。

<?php
$sql = "SELECT categories.name, COUNT(articles.id) AS cnt
    FROM categories
    LEFT JOIN articles ON articles.category=categories.category";
$query = mysql_query($sql);
while ($category = mysql_fetch_assoc($query)) {
    echo $category['name'].' - '.$category['cnt'];
}
?>

(もちろん、私はあなたのテーブル構造を知らず、フィールド名を推測しなければなりませんでしたが、それがどのように機能するかについてのアイデアをあなたに与えるはずです)。JOINについては、MYSQLのドキュメントを読む必要があります。

于 2012-07-22T16:05:08.040 に答える
1

これを試してみてください...これがあなたが探しているものかもしれません。単一のmysqlクエリを使用して同じ結果を見つけることもできます。

$sql = "SELECT * FROM `categories`";
$query = mysql_query($sql) or die("Could not get CATEGORIES ".mysql_error());

$result = array();
while($category = mysql_fetch_array($query)){

$cat = $category['category'];

$sql = "SELECT count(*) as numberOfArticles FROM `articles` WHERE `category` = '$cat'";
$query2 = mysql_query($sql) or die(mysql_error());

$articles = mysql_fetch_array($query2);
$category['numberOfArticles'] = $articles['numberOfArticles'];
$result[] = $category;

}   

print_r($result);
于 2012-07-22T16:07:16.547 に答える