Autor Zpráva
drotik
Profil *
Pre vyber clankov na uvodnej stranke pouzivam tabuľku: com_select, kde sa vyberaju zo všetkých článkov (tabuľka com_articles) len tie, ktorých i_id_article patria do určitých kategorii: i_id_category (tabuľka com_articles) + splňaju podmienku, že su najmladšie (d_sdate - zač. datum zobrazovania articlu ), sú publikované... + celkový počet článkov na úvodke je 8...

Môj syntax:
select i_id_article from com_article where (i_id_category= 12 OR i_id_category= 23 OR i_id_category= 5 OR i_id_category= 13 OR i_id_category= 7 OR i_id_category= 26) and NOW() between d_sdate and d_edate and s_pub = "1" and i_id_language = 1 and s_top = "0" order by d_sdate desc limit 8


V súčasnosti mám najviac článkov z i_id_category= 23, preto niekedy zaplavia články tejto kategórie celú úvodku...

PRETO: Prosím o napísanie nového syntaxu, kde bude pridaná podmienka: Nech sa zobrazujú medzi 8 článkami na úvodke napr. len 2 články z kategórie 23 a zvyšných 6 článkov nech sa doplní z ostatných kategórii podľa pôvodnych podmienok + nech sa články z kategórie 23 zobrazujú medzi ostatnými článkami podľa dátumu štartu publikovania, teda podľa rovnakých podmienok.

Ja som laik, ten syntax mi písal jeden pán, na ktorého už žiaĺ nemám kontakt...
MartinR
Profil
Z hlavy mě napadá něco takového:
select i_id_article 
from com_article 
where 
NOW() between d_sdate and d_edate and s_pub = "1" and i_id_language = 1 and s_top = "0" 
AND (i_id_category=(select i_id_category from com_article where i_id_category= 23 LIMIT 2)
OR i_id_category in (SELECT i_id_category from com_article where i_id_category in (5,7,12,13,26) LIMIT 6))
order by d_sdate desc
drotik
Profil *
Vyzera to logicky, ale môj web to nezobral. Preto prikladam aj php kod, ktory sa odvoláva práve com_select:
if (is_array($com_selects))
    while (list($ci, $com_select) = each($com_selects)) {
      //-------------------------------------------- use pregenerated selects or not
      if (!$conf["index"]["use_generated_selects"]) {
        $results = $mysql->select($com_select["t_query"]);
        $query_range = "";

        foreach($results as $result)
          $query_range .= $result[$com_select["t_field"]] . ",";

        $com_select["t_field_range"] = substr($query_range, 0, strlen($query_range) - 1);
      }
      $tpl->define_dynamic($com_select["t_template_source"], "content");

      if (strlen($com_select["t_field_range"]) > 0)
        ReadArticles($com_select["t_field_range"], "30", true, $com_select["t_template_variable"], $com_select["t_template_source"], false);
   } 


+ štruktúra tabuľky com_select - ide právek o riadok i_id_selec=3:


Diki

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0