|
|
|
|
|
для: Faraon
(28.01.2008 в 22:07)
| |
<?
function genre_count($id) {
GLOBAL $db,$val;
$s["genre_id"] = "genre_id=".$id;
if (!!$val["model_id"]) {
$s["model_id"] = "(sph) regexp '[[:<:]]".$val["model_id"]."[[:>:]]'";
}
$item_request = "WHERE ".implode(" AND ",$s);
$total=mysql_result(mysql_query("SELECT count(*) FROM ".$db["prefix"]."item ".$item_request.";"),0,0);
return($total);
}
function genre_list($id) {
GLOBAL $db,$var,$val,$TMPL;
$r=mysql_query("SELECT * FROM ".$db["prefix"]."genre ORDER BY sort_id DESC, name") or die(mysql_error());
$cnt=mysql_num_rows($r); if ($cnt==0) return;
$num=0;
while ($R=mysql_fetch_assoc($r)) {
$genre_count = genre_count($R["id"]);
if (!!$genre_count) {
$num++;
$s=$TMPL["menu3"];
if ($id == $R["id"]) $s=$TMPL["menu4"];
$s=str_replace("[GENRE_ID]",$R["id"],$s);
$s=str_replace("[GENRE]",$R["name"],$s);
$s=str_replace("[COUNT]",$genre_count,$s);
if ($num==1) {$tmpl2=$TMPL["menu2"];} else {$tmpl2="";}
if ($num==$val["genre_column"]) {$tmpl5=$TMPL["menu5"]; $num=0;} else {$tmpl5="";}
$s=$tmpl2.$s.$tmpl5;
$list[$R["id"]] = $s;
}
}
if (!!count($list)) {
$h = implode("\n".$TMPL["menu7"]."\n",$list);
}
$h = $TMPL["menu1"].$h.$TMPL["menu6"];
return($h);
}
?>
|
| |
|
|
|
|
|
|
|
для: vbps
(28.01.2008 в 21:46)
| | Н-да, мало понятно, Вы уж кусок кода приведите, где все это Вы используете вместе с циклами. | |
|
|
|
|
|
|
|
для: cheops
(26.01.2008 в 13:01)
| | В смысле вынести?
Одна функция пробегает по 1-ой таблице соберая список категорий, другая же используется в цикле этой функции для получения кол-ва записей для каждой категории из 2-ой таблицы. Это нужно что бы не отображать пустые категории.
Думаю как еще извратится, но пока ничего не придумал. Пробовал вмето фукции заунуть запрос в цикл, но результат тот же (запросов к базе меньше не становится). | |
|
|
|
|
|
|
|
для: vbps
(25.01.2008 в 15:20)
| | Вынести из цикла функцию нельзя? Или цикл пробегает по разным таблицам? | |
|
|
|
|
|
|
| использую:
Как можно еще посчитать? Это дело использую в функции для подсчета количества содержимого в item и саму функцию использую в цикле, что занимает примерно от 0,7 до 1,6 сек. Много. Заранее посчитать и сохранить нельзя, все должно просчитываться динамически.
$count=mysql_result(mysql_query("SELECT count(*) FROM ".$db["prefix"]."item ".$item_request.";"),0,0);
|
Есть какие то возможные решения? | |
|
|
|
|