• User

    mysql-fetch + smarty

    non riesco a fare il ciclo, in smarty, di un risultato di una query mysql

    [PHP]$result=mysql_fetch_array($db->query);[/PHP]

    io assegno $result come veriabile a smarty:

    [PHP]$smarty->assign('news', $result);[/PHP]

    nel template
    se faccio stampare il risultato ,senza ciclo funziona, ovvero:
    [PHP]
    {$news.title}
    {$news.text}[/PHP]

    se invece gli faccio fare il ciclo mi restituisce la prima lettera dei campi :arrabbiato:

    [PHP]{foreach from=$news item=row }
    {$row.title}
    {$row.date}
    {/foreach}[/PHP]

    ho provato a riempire la variabile $result, prima di assegnarla a smarty, con un ciclo sull'array della query al db,
    usando poi un ciclo {section} il tutto funziona,

    ma ci deve essere un modo più semplice no ??? usando il ciclo foreach ??


  • User Attivo

    Non conosco smarty, però in questo caso mi sembra che il ciclo devi farlo sulla fetch:

    while ($result=mysql_fetch_array($db->query))
    {
    ...
    }


  • User

    si, ma io tentavo di fare il ciclo direttamente sul template


  • User Attivo

    Però se passi il risultato della fetch passi un solo record - array, se fai il ciclo su quello fai il ciclo sui campi di quel singolo record.


  • User

    @Senamion said:

    Però se passi il risultato della fetch passi un solo record - array, se fai il ciclo su quello fai il ciclo sui campi di quel singolo record.

    e si era proprio quello il problemma !! 🙂
    ho risolto riempendo la variabile assegnata a smarty con un ciclo, che restituisce i risultati di ogni riga dell'array:

    [PHP]while ($row=mysql_fetch_array($db->result,MYSQL_ASSOC)) {
    $result[]=$row;
    $smarty->assign('news', $result );
    }[/PHP]

    e nel template

    [PHP]{foreach from=$news key=arrkey item=arritem}
    {$arrkey} = {$arritem.title}
    {$arritem.text}</p>
    {/foreach}[/PHP]

    mi piace smarty, ha un mucchio di funzioni interessanti.. provatelo!

    http://smarty.php.net

    :ciauz: