Tervehdys.
Miten ihmeessä saan for-luupissa laitettua tavaraa assosiatiiviseen tauluun ?
Tämä ei näytä toimivan:
$asso = array(); for ($i = 0; $i < mysql_num_rows($sql_query); $i++) { $Cars = mysql_result($sql_query, $i, "car"); $other = "toinen_tavara"; // Eli tässä kokeilen laittaa taulukkoon tavaraa $asso = ( "auto" => $Cars , "muut" => $other); }
Mutta yo. tavalla en saanut toimimaan ?
Eli miten saan lisättyä tavaraa assosiatiiviseen taulukkoon tuossa loopin aikana ?
$asso["auto"] = $Cars; $asso["muut"] = $other;
Hmmm..
Jostain syystä, kun printtailen tavaroita pihalle, saan vain ensimmäisen kirjaimen kummastakin muuttujasta?
debug debug!
eli
echo '<pre>'; print_r($Cars); echo '</pre>';
Itse suosisin mieluummin mysql_fetch_assoc($result) -funkkaria ja while-looppia.
Lebe80 kirjoitti:
Itse suosisin mieluummin mysql_fetch_assoc($result) -funkkaria ja while-looppia.
Teen samoin (ellen käytä jotain tietokanta-abstraktioluokkaa, jonka yhteydessä foreach on usein näppärin). Tässä esimerkkiä:
$result = mysql_query("SELECT ..."); while($myrow = mysql_fetch_assoc($result)) { $asso["auto"] = $myrow['car']; // ... }
Ok...
Huomasin just, että tämä onkin smarty ongelma.
eli tavarat tulee aivan oikein kannasta ulos.
Nyt kun lähetän taulun smarty templatelle ja kokeilen siellä tulostaa niitä pihalle, niin saan vain ensimmäiset kirjaimet?
PHP
$asso = array(); for ($i = 0; $i < mysql_num_rows($sql_query); $i++) { $Cars = mysql_result($sql_query, $i, "car"); $other = "toinen_tavara"; $asso["auto"] = $Cars; $asso["muut"] = $other; } $smarty->assign("asso", $asso); $smarty->display("template.tpl");
Smarty template
<html> <body> <table> {foreach item=asso from=$asso} <tr> <td>{$asso.auto}</td> <td>{$asso.muut}</td> </tr> {/foreach} </table> </body> </html>
Käytä eri muuttujan nimiä itemissa ja fromissa?
Chiman kirjoitti:
Käytä eri muuttujan nimiä itemissa ja fromissa?
Katsos. En tiennytkään, ettei ne saa olla samannimiset.
No nyt alkoi tulemaan järkevää tavaraa sivulle.
Kiitos paljon !
Aihe on jo aika vanha, joten et voi enää vastata siihen.