PDA

Pogčedajte punu verziju : Kategorije...


nEdImT
13. 02. 2008., 10:08
<table width="100%" border="0" cellspacing="2" cellpadding="3">
<tr>{foreach from=$kategorije item=sta}

<td width="43%" height="23" bgcolor="#73B000">{$sta.naziv}</td>
</tr> {/foreach}

</table>

<table width="100%" border="0" cellspacing="2" cellpadding="3">
<tr>{foreach from=$podforumi item=sta}
<td width="5%" height="23" bgcolor="#E5E5E5">Ovdje slika </td>
<td width="43%" bgcolor="#E5E5E5">{$sta.naziv}<br />
{$sta.opis}</td>
<td width="8%" bgcolor="#E5E5E5"><div align="center">{$sta.tema}</div></td>
<td width="10%" bgcolor="#E5E5E5"><div align="center">{$sta.postova}</div></td>
<td width="34%" bgcolor="#E5E5E5"><div align="center">Trenutno nema postova. </div></td>
</tr>{/foreach}
</table>


Prikaze samo prvu kategoriju i u njoj podforume, a druga nista i ostale... Negdje sam kod HTML kôda.

$query = mysql_query("SELECT * FROM forum_kategorije");
while($a=mysql_fetch_array($query)){
$kategorije[] = $a;

$query = mysql_query("SELECT * FROM forum_podforumi WHERE kat='$a[id]'");
while($a=mysql_fetch_array($query)){
$podforumi[] = $a;
}


}

$smarty->assign('podforumi', $podforumi);
$smarty->assign('kategorije', $kategorije);

cvele
13. 02. 2008., 11:04
prvo sto mi je zapalo za oko je to sto ti je foreach iza prvog tr taga... treba ispred

druga stvar je, query... nema smisla izvrsavati n broj querija samo da bi izvukao sve kategorije... vrlo se jednostavno to moze u raditi sa jednim

Vokic
13. 02. 2008., 11:05
Ono sto ja vidim trenutno (tek sam ustao i pijem kafu) jeste greska u formiranju tabele:


<tr>{foreach from=$podforumi item=sta}
...
</tr>{/foreach}


Znaci ubaci foreach pre <tr>

Usput uradi i proveru rezultata sa jednim obicnim dumpom iz php-a za svaki slucaj pa vidi sta dobijas... E sad jos da zapalim... pa srk kafice... mmmmmm

Damn... preteko me Cvele... tztztz :D

cvele
13. 02. 2008., 11:10
eve ti nesto zbuckano na brzinu

$query = mysql_query("SELECT * FROM forum_kategorije");
while($a=mysql_fetch_object($query)){
$kategorije[$a->id] = $a;
}
$query = mysql_query("SELECT * FROM forum_podforumi
WHERE kat in (select id from forumi_kategorije)");
while($ob=mysql_fetch_object($query)){
$kategorije[$ob->kat]->podforumi = $ob;
}

moze i bez subquerija... i jos da se twakuje dosta... al i vako je bolje nego da izvrsavas 1 + broj_kategorija querija

nEdImT
13. 02. 2008., 11:18
Kad stavim ispred <tr> opet mi isto bude.

A onda promijenim ovaj PHP kôd i ovakve greške:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\fitness\administracija\forum.php on line 16

Fatal error: Cannot use object of type stdClass as array in C:\xampp\htdocs\fitness\administracija\templates_c \%%F9^F92^F92FFC1F%%forum.tpl.php on line 19

cvele
13. 02. 2008., 12:24
ako koristis ovaj kod moraces malo da promenis i smarty tpl i ostatak php-a...

prvo lepo ti kaze greska... nije u pitanju array nego objekat, drugo ovde nemas dva assign poziva vec samo jedan zato sto je sve u jednom array-u

nemoj ocekivati da ti napisem ceo tpl i php... pomuci se malo , nije tesko... uostalom tako ces najbolje skapirati gde gresis

ivanhoe
13. 02. 2008., 14:55
ja bih to malo drugacije:

$sql = "SELECT p.*, k.id AS kat_id, k.naziv AS kategorija
FROM forum_kategorije as k, forum_podforumi as p
WHERE kat=k.id";
$query = mysql_query($sql);

while($a=mysql_fetch_array($query))
$podaci[ $a['kategorija'] ][] = $a;

// a onda glavna fora, pokupimo kategorije bez posebnog upita
$kategorije = array_keys($podaci);
// sortiramokategorije abecedno
sort($kategorije);

$smarty->assign('podaci', $podaci);
$smarty->assign('kategorije', $kategorije);


i onda smarty moze ovako:

{foreach from=$kategorije item=sta}
{assign var='podaci_kat' value=$podaci.$sta}

<table width="100%" border="0" cellspacing="2" cellpadding="3">
<tr>
<td colspan="5">Kategorija: {$sta}</td>
</tr>
{section loop=$podaci_kat name=cnt}
<tr>
<td width="5%" height="23" bgcolor="#E5E5E5">Ovdje slika </td>
<td width="43%" bgcolor="#E5E5E5">{$podaci_kat[cnt].naziv}<br />
{$podaci_kat[cnt].opis}</td>
<td width="8%" bgcolor="#E5E5E5" align="center">{$podaci_kat[cnt].tema}</td>
{if $podaci_kat[cnt].postova}
<td width="10%" bgcolor="#E5E5E5" align="center">{$podaci_kat[cnt].postova}</td>
{else}
<td width="34%" bgcolor="#E5E5E5" align="center">Trenutno nema postova.</td>
{/if}
</tr>
{sectionelse}
<tr>
<td colspan="5">Trenutno nema podforuma</td>
</tr>
{/section}
</table>
{/foreach}


ovoje kucano iz glave verovatno ima gresaka, ali snaci ces se vec... koristi {debug} ako ti nje jasno kako izgledaju podaci koji se prosledjuju Smartiju