колко добавени статии има в категория

embaka

Registered
здравейте.

значи чудя се как да извлека, на всяка една категория, колко добавени статии имам. Искам като погледна в менюто на категориите, след тях да ми пише цифрата (колко общо за тази категория има добавени)

с тази заявка изкарвам категориите:

Код:
<?
 $result2 = mysql_query("SELECT * FROM categories",$db);
if (!$result2)
{
echo "<p>Въпроса, по който търсихте не може да бъде открит.</p>";
}
if (mysql_num_rows($result2) > 0)
{
$myrow2 = mysql_fetch_array($result2);
do 
{
printf ("<p class='point'><a class='nav_link' href='view_cat.php?cat=%s'>%s</a></p>",$myrow2["id"],$myrow2["title"]);
}
while ($myrow2 = mysql_fetch_array($result2));
}
else
{
echo "<p>Информация по въпроса не може да бъде излвечена. Не съществува в базата данни.</p>";
}
 ?>

категориите ми се записват в таблица data в поле cat. на всяка цифра отговаря категория, как да събера всичките статии от категория 5 примерно

catv.png
 
на всички категории ми вади 55, а категория 5 има само 55 статии, на другите я има я не
 
embaka каза:
как да ги изведа след тази заявка?
Изпълни я :idea: :
Код:
$zaqvka = "SELECT cat, count(id) as broi FROM data GROUP BY cat";
mysql_query($zaqvka) or die (mysql_error());
Ако съм те разбрал правилно можеш да ползваш и функцията mysql_num_rows :roll: .
 
аз ги изведах, но на всички ми изписва 55, а на категория с номер 5 имам само толкова записа
 
Трябва да се даде и таблицата, в която записваш статиите

И заявката трябва да представлява нещо такова:
SELECT c.*, count(s.id) as count FROM categories as c LEFT OUTER JOIN statii as s ON c.id = s.catid GROUP BY c.id

statii - името на таблицата със статиите
catid - името на полето, в което записваш категорията (в таблицата със статиите)

Ако не дадеш таблицата със статиите - гледай внимателно кода, който съм дал и си замени полетата.
 
Код:
 <div class="lmenu_obox"><strong>Категории</strong>
<?
$resultcat = mysql_query ("SELECT c.*, count(s.id) as count FROM categories as c LEFT OUTER JOIN data as s ON c.id = s.cat GROUP BY c.id",$db);
$myrowcat = mysql_fetch_assoc ($resultcat) or die ("Грешка при извеждане на общо статии"); 

$result2 = mysql_query("SELECT id,title FROM categories",$db);
	if (!$result2)
		{
			echo "<p>Въпроса, по който търсихте не може да бъде открит.</p>";
		}
	if (mysql_num_rows($result2) > 0)
		{
			$myrow2 = mysql_fetch_array($result2);
				do 
			{
				printf ("<p class='point'><a class='nav_link' href='view_cat.php?cat=%s'>%s (%s)</a></p>",$myrow2["id"],$myrow2["title"],$myrowcat["count"]);
			}
			while ($myrow2 = mysql_fetch_array($result2));
		}
	else
		{
			echo "<p>Информация по въпроса не може да бъде излвечена. Не съществува в базата данни.</p>";
		}
 ?>
</div>

извеждам count, на негово място излиза 55

направил съм го така и всеки път ми вади на всички категории винаги 55, както казах и по рано, това е на категория номер 5 добавените статии
 
Проблемът не е от заявката, а от кода. :)

Втората заявка изобщо не ти е нужна, защото със заявката, която съм ти дал вадиш и нужните полета от таблица categories. Просто трябва да обходиш резултатите от първата заявка.

<div class="lmenu_obox"><strong>Категории</strong>
<?
$resultcat = mysql_query ("SELECT c.id as id, c.title as title, count(s.id) as count FROM categories as c LEFT OUTER JOIN data as s ON c.id = s.cat GROUP BY c.id",$db);
$myrowcat = mysql_fetch_assoc ($resultcat) or die ("Грешка при извеждане на общо статии");

$result2 = mysql_query("SELECT id,title FROM categories",$db);
if (!$result2)
{
echo "<p>Въпроса, по който търсихте не може да бъде открит.</p>";
}
if (mysql_num_rows($result2) > 0)
{
$myrow2 = mysql_fetch_array($result2);
do
{
printf ("<p class='point'><a class='nav_link' href='view_cat.php?cat=%s'>%s (%s)</a></p>",$myrow2["id"],$myrow2["title"],$myrowcat["count"]);
}
while ($myrow2 = mysql_fetch_array($myrowcat));
}
else
{
echo "<p>Информация по въпроса не може да бъде излвечена. Не съществува в базата данни.</p>";
}
?>
</div>

Но използвай while, вместо do while за вадене не резултатите, защото така мисля, че ти изкарва един празен резултат. :) Не съм ти махал if-ове, защото не знам кои ти трябват и кои не, но втората заявка (SELECT id,title FROM categories) е напълно излишна :)
 

Back
Горе