Visualizzazione dei risultati da 1 a 10 su 10

Discussione: e [smarty] ciclo while

  1. #1
    Utente di HTML.it L'avatar di JRizz
    Registrato dal
    Apr 2001
    Messaggi
    125

    e [smarty] ciclo while

    Dovrei fare un ciclo di una sezione di un template ma dove sbaglio?
    Così mi da solo l'ultimo record estratto..


    Codice PHP:
    <?
    define
    ("SMARTY_DIR"'../libs/');
    require_once(
    SMARTY_DIR.'Smarty.class.php');
    $smarty = new Smarty;

    $smarty->compile_check true;
    //$smarty->debugging = true;
    //$s->caching = 2;
    //$s->cache_lifetime = 300;
    include('connect.php');

    $smarty->assign("title","Pagina di prova");

    $resultmysql_query("SELECT * FROM capitolo"$connessione);
    $num_rows mysql_num_rows($result); 
        while ( 
    $a_row mysql_fetch_object($result))
            {
                
    $nome_capitolo=$a_row->nome_capitolo;
    $smarty->assign("contacts", array(array("capitolo"=>"$nome_capitolo")));
    }

            
    $smarty->display('menu.tpl');
    ?>
    menu.tpl è questo

    {$title}

    {section name=sec1 loop=$contacts}
    phone: {$contacts[sec1].capitolo}

    {/section}

    che da questo risultato:

    Pagina di provaPagina di prova Link utili

    link utili è l'ultimo record della tabella.

  2. #2
    Utente di HTML.it L'avatar di JRizz
    Registrato dal
    Apr 2001
    Messaggi
    125
    Sorry
    il risultato è

    Pagina di prova Link utili

    ho sbagliato ad inserire il codice vb

  3. #3
    costruisci un array PHP all'interno del while con tutti i risultati e assegnalo a Smarty dopo il while.

    Con $smarty->assign non aggiungi alla var "contacts" tutti i link ma la sostituisci, dunque ti ritrovi sempre e solo con l'ultimo

  4. #4
    Utente di HTML.it L'avatar di JRizz
    Registrato dal
    Apr 2001
    Messaggi
    125
    Grazie spoon25 ho visto solo ora la tua risposta.

    Mi potresti postare un pò di codice, sono alle primissime armi con smarty

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Ma l'hai letto il manuale?
    Non devi ciclare in php, devi assegnare a smarty l'intero array con tutti i dati; è poi smarty che ci esegue il ciclo sopra

  6. #6
    Utente di HTML.it L'avatar di JRizz
    Registrato dal
    Apr 2001
    Messaggi
    125
    Grazie luca200 ma ho appena iniziato ieri sera a dare uno sguardo a smarty, e oltre alla teoria ci vuole un pò di pratica, se per cortesia tu e spoon25 potreste darmi un po di codice all'esempio che ho postato, forse riesco a capirne qualcosa....

  7. #7
    Utente di HTML.it L'avatar di JRizz
    Registrato dal
    Apr 2001
    Messaggi
    125
    Grazie per non avermi risposto, ho potuto cosi faticare un pò:

    anche se sono solo all'inizio:

    Codice PHP:
    $sql "SELECT nome_capitolo FROM capitolo";
    $res mysql_query($sql);
    $results = array();
    $i=0;

    while (
    $r=mysql_fetch_array($res)) {
    $tmp = array(
    "nome"=> $r["nome_capitolo"]
    );
    $results[$i++] = $tmp;
    }

    // passa l’array al template
    $smarty->assign("results"$results); 

  8. #8
    Utente di HTML.it L'avatar di JRizz
    Registrato dal
    Apr 2001
    Messaggi
    125
    Ci sto provando gusto

    Ma ora come faccio a dare in pasto a smarty questa roba qua

    Codice PHP:
    $result mysql_query("SELECT id_capitolo, nome_capitolo FROM capitolo o"$connessione);
    $i=0;
    while (
    $r=mysql_fetch_array($result)) {
    $tmp = array("id"=> $r["id_capitolo"],"nome"=> $r["nome_capitolo"]);
    $results[$i++] = $tmp;

    $resulti mysql_query("SELECT titolo_menu FROM menu WHERE cod_capitolo='$r[id_capitolo]'"$connessione);
    $e=0;
    while (
    $o=mysql_fetch_array($resulti)) {
    $mp = array("idi"=> $o["id_menu"],"nomei"=> $o["titolo_menu"]);
    $resultsi[$e++] = $mp;
    }





    che dovrebbe generarmi a video


    codice:
    <ul>[*]Capitolo1
          <ul>[*]menu1[*]menu2[*]menu3[/list]
    [*]Capitolo2
          <ul>[*]menu4[*]menu5[*]menu6[/list]
    
    <ul>

  9. #9
    prima cosa: $resultsi conterra solo i valori dell'ultima query perché parti sempre da 0 ... dunque il tuo codice così com'è non funzionerà correttamente ...
    Codice PHP:
    <?php
    $result 
    mysql_query("SELECT id_capitolo, nome_capitolo FROM capitolo o"$connessione); 
    $results = array();
    while(
    $r mysql_fetch_array($result)){
        
    $results[] = array("id"=> $r["id_capitolo"],"nome"=> $r["nome_capitolo"]);
        
    $resulti mysql_query("SELECT titolo_menu FROM menu WHERE cod_capitolo='{$r['id_capitolo']}'"$connessione);
        
    $resultsi = array();
        while(
    $o mysql_fetch_array($resulti)){ 
            
    $resultsi[] = array("idi"=> $o["id_menu"],"nomei"=> $o["titolo_menu"]);
        }
        
    $results[] = array("id" => $r["id_capitolo"], "nome" => $r["nome_capitolo"], "menu" => $resultsi);
    }
    $smarty->assign('menu'$results);
    ?>
    e poi in smarty basta che ti leggi la doc del foreach (http://smarty.php.net/manual/en/lang...on.foreach.php) e potrai ottenere quello che ti serve ma potrebbe esser qualcosa come questo:
    codice:
    <ul>
    {foreach name=capitoli item=cap from=$menu}
    	[*]{$cap.nome}
    	<ul>
    	{foreach name=menu item=item from=$cap.menu}
    		[*]{$item.nomei}
    	{/foreach}
    	[/list]
    	
    {/foreach}[/list]

  10. #10
    Utente di HTML.it L'avatar di JRizz
    Registrato dal
    Apr 2001
    Messaggi
    125
    Ci siamo quasi solo che il risultato è

    codice:
     *Capitolo_1
     *Capitolo_1
    
        * Menu_1
        * Menu_2
        * Menu_3
        * Menu_4
    
    *Capitolo_2
    *Capitolo_2
    
        * Menu_5
        * Menu_6
        * Menu_7
        * Menu_8
    In pratica mi doppia il record della prima query (potrei mettere un distinct ma non mi sembra la soluzione ideale).

    Grazie tante mi sei stato di grande aiuto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.