Изкарване колко текста има

d1stance

Registered
Добър вечер. Удеве тръгнах да си правя една системка и ме интересува как да покажа в дадена категория колко текста има.
Екшън (4)
Комедия (141)
Pc (41)
 
вадиш ги с цикъл, нали?
тогава така:
Код:
SELECT COUNT(*) AS broi FROM tablica_s_statii WHERE cat_id='$id_na_cat'
взимаш си резултата broi от заявката
трябва да си смениш името на таблицата,името на полета където пише в коя категория е и $id_na_cat идто на категорията на която е цикъла в момента :wink:
 
SELECT count(table1.id) as num, table2.id as id, table2.name as name FROM table1 LEFT JOIN table2 ON table1.cat = table2.id GROUP BY table1.cat

Ползвал съм този код в 1 сайт, като в случая table1 ми беше таблицата със резултатите (в моя случай новини), а table2 таблицата с категориите. В резултатите num е броя резултати в категория, id е id на категорията, а name е името на категорията
Ако нещо не е ясно и не схващаш принципа дай си таблиците и ще ти го направя

Edit: По този начин ще показва само категориите в които има добавени материали, ако искаш да се показват и останалите ползвай RIGHT JOIN вместо LEFT JOIN
 
$gener = $_GET['gener'];
$our = mysql_query("SELECT count(id) as cat_total FROM vs_category WHERE id='$gener'");
while($r=mysql_fetch_array($our)){
echo "Общо категории: <b>" .$r['cat_total']. "</b><br />";
}

така не става :shock:
 
Оправих се по следния начин:
Код:
$gener = isset($_GET['gener']); 
$cat = mysql_query("SELECT * FROM `vs_category`"); 
while($row = mysql_fetch_array($cat)){ 
$our = mysql_query("SELECT count(id) as total FROM vs_vicove WHERE cat=$row[id]"); 
while($raw=mysql_fetch_array($our)){ 
$total=$raw['total']; 
} 
echo "<a href=\"?gener=$row[id]\">$row[category] ($total) </a> "; 
}

Има ли нужда от защити и ако има нека да ми е направи на кода , ако може :)
 
Предлагам ти да го оптимизираш и всичко да става с 1 заявка:

$our = mysql_query("SELECT count(vs_vicove.id) as num, vs_category.id as id, vs_category.category as name FROM vs_vicove LEFT JOIN vs_category ON vs_vicove.cat = vs_category.id GROUP BY vs_vicove.cat");
while ($row = mysql_fetch_array($our)) {
extract($row);
echo "<a href='?gener=$id'>$name ($num)</a><br />"; }
 
Не че при 10тина категории ще се усети някакво забавяне с твоя код, но по втория начин имаш 1 единствена заявка и резултата е точно и само това, което ти трябва ;) Пък и е по гъзарско :twisted:
 

Back
Горе