Autor Zpráva
radeson
Profil
dobrý večer, buď už jsem ospalej, nebo slepej či snad blbej (nejspíš), ale ať to prohlížím, jak to prohlížím, pořád nemůžu přijít na to co mám špatně. Mám mysql dotaz, který mi vrací pole s články. Používám k tomu mysql_fetch_assoc. Viz kód:
$resource = mysql_query("SELECT id_article, headline, editorial FROM articles");
$articles = mysql_fetch_assoc($resource);
$smarty = new ConfiguredSmarty();
$smarty->assign("articles",$articles);
$smarty->display("index.tpl");

šablona vypadá takto:
...
     {foreach key=cid item=con from=$articles}
     <h2>{$con.headline}</h2>
     {/foreach}
...
Toto mi nefunguje: Vypíše se mi pouze počátećní písmeno pole editorial, což nechápu, tzn. článek začíná Lorem Ipsum, vypíše se mi L. Pokud si chci nechat vypsat {$con} tak se mi vypíšou všechny hodnoty pole najednou, tak jak je požaduji v mysql dotazu. Nevíte proč mi nefungují ty konkrétní indexy pole? Jinak pole $article vypsané print_r vypadá takto:
Array ([id_article] => 1 [headline] => Lorem Ipsum [editorial] => Lorem ipsum dolor sit amet...... )
MaxwellDemon
Profil
<h2>{$con->headline}</h2>
radeson
Profil
MaxwellDemon
ne to mi nefunguje vubec :(
MaxwellDemon
Profil
radeson
já bohužel neznám vůbec ty mysql funkce, protože mysql se jako databázi ze zásady vyhýbám ... navíc phpkový funkce managující přístupy k databázi obecně mám zapouzdřený ve svojí vlastní knihovně už strašně dávno, tak je taky už moc neznám, protože je přímo nepoužívám ... ale principiálně tam ta šipka je ... nevim, co je ten $con přesně za strukturu, ale přistupuješ k tomu potom už úplně stejně jako v php souboru ... i s voláním funkcí a tak ... normálně šipka-jménofunkce-parametr ... takže problém nejpíš nebude ani tak v tý šipce, jako v tý struktuře, co vrací ta mysql_fetch_assoc
bukaj
Profil
radeson
Jelikož do pole $articles získáváš jenom jeden řádek z databáze, nechápu proč ho v šabloně procházíš cyklem foreach. A jestli chceš získat všechny řádky, musíš použít nějaký cyklus již při výběru. Dělá to již to, co cheš, když nahradíš:
$articles = mysql_fetch_assoc($resource);

za:
$articles = array();
while ($articles[] = mysql_fetch_assoc($resource));
array_pop($articles);

?

A jinak ve Smarty se pro přístup k poli indexovanými řetezeci používá tečková notace, takže jsi to měl správně a to, co ti radil MaxwellDemon ({$con->headline}), by se dalo použít, pokud bys používal mysql_fetch_object() místo mysql_fetch_assoc().

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: