Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Smarty e mysql

  1. #1

    Smarty e mysql

    Codice PHP:
    <?php
    function Create(&$m ''){
    global 
    $smarty,$db_prefix;
        
    $q=mysql_query('SELECT * FROM '.$db_prefix.'menu ORDER BY id desc');
        while(
    $ex mysql_fetch_array($q,MYSQL_ASSOC)){
            
    $m .= $ex;
        }
        
    $smarty->assign('menu',array($m));
    }
    ?>
    a me servirebbe fare in modo che si crei dentro la var un cosa del genere
    Codice PHP:
    $smarty->assign('menu',array(array('ide'=>$ex['ide']),array('ide'=>$ex['ide']))) 
    ecc...
    come posso fare

  2. #2
    Smarty è un template engine: anche se possibile non è corretto creare una funzione che interroghi un db. Estrai i dati separatamente e poi li passi a smarty con $smarty->assign( 'menu' , $menu_estratto);
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #3
    Originariamente inviato da mircov
    Estrai i dati separatamente e poi li passi a smarty con $smarty->assign( 'menu' , $menu_estratto);
    E' quello che ha fatto, eh.

    francy, con il punto si concatenano le stringhe. Se vuoi unire degli array devi usare array_merge().

  4. #4

    Re: Smarty e mysql

    Originariamente inviato da francy2
    Codice PHP:
    <?php
    function Create(&$m ''){
    global 
    $smarty,$db_prefix;
        
    $q=mysql_query('SELECT * FROM '.$db_prefix.'menu ORDER BY id desc');
        while(
    $ex mysql_fetch_array($q,MYSQL_ASSOC)){
            
    $m .= $ex;
        }
        
    $smarty->assign('menu',array($m));
    }
    ?>
    Questo è quello che ha fatto! Una funzione richiamabile dal file di template di smarty che crea il menù interrogando il db.
    a me servirebbe fare in modo che si crei dentro la var un cosa del genere
    Codice PHP:
    $smarty->assign('menu',array(array('ide'=>$ex['ide']),array('ide'=>$ex['ide']))) 
    ecc...
    come posso fare
    Questo è quello che vorrebbe ottenere.

    La funzione che hai creato per smarty la devi usare direttamente nel file php. Quello che ti viene restituito lo passi a smarty come t ho detto sopra (cioè come con $smarty->assign).
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  5. #5
    cioè devo scrivere
    $smarty->assign('menu',array(array_merge($m)))
    ???

  6. #6

    Re: Re: Smarty e mysql

    Originariamente inviato da mircov
    Questo è quello che ha fatto! Una funzione richiamabile dal file di template di smarty che crea il menù interrogando il db.
    Veramente quella è una funzione che interroga il database e assegna i risultati a smarty così che possa usarli nel template.
    Che quella funzione la richiami dal template è una tua idea basata non si sa bene su cosa, visto che non c'è scritto da nessuna parte.

  7. #7
    Originariamente inviato da francy2
    cioè devo scrivere
    $smarty->assign('menu',array(array_merge($m)))
    ???
    Ho detto che il problema è la concatenazione, quella che hai dentro il while.
    Concateni degli array usando il punto, che è appunto un errore.

  8. #8
    Originariamente inviato da mircov
    Smarty è un template engine: anche se possibile non è corretto creare una funzione che interroghi un db. Estrai i dati separatamente e poi li passi a smarty con $smarty->assign( 'menu' , $menu_estratto);
    Credo che creare un funzione del genere porti ad una confusione generale. Smarty è un template engine e secondo me come tale va trattato: a Smarty non deve interessare da dove vengono presi i dati, esso deve occuparsi semplicemente di mostrarli. Ora, se si permette a Smarty di estrarre dati dal db (view e model vengono mischiati in un certo senso) si può arrivare a rendere il codice poco gestibile. Io ho provato a fare una cosa del genere anche se in modo più massiccio ed alla fine non ci ho capito più niente. Il mio era un consiglio sul modo di operare, quello che secondo me è più corretto. Siamo qui anche per questo, no?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  9. #9
    Originariamente inviato da mircov
    Credo che creare un funzione del genere porti ad una confusione generale. Smarty è un template engine e secondo me come tale va trattato: a Smarty non deve interessare da dove vengono presi i dati, esso deve occuparsi semplicemente di mostrarli. Ora, se si permette a Smarty di estrarre dati dal db (view e model vengono mischiati in un certo senso) si può arrivare a rendere il codice poco gestibile.
    mircov, che in quel codice si permetta a smarty di estrarre dati dal db è una tua invenzione, perché non c'è scritto da nessuna parte.
    E' un pezzo di codice PHP, non HTML con dentro i tag di Smarty.

  10. #10
    Che fissa brutta che ho preso!!!

    Cmq anche le funzioni di smarty sono in php, con una ferrea sintassi per i nomi di funzione ma sono cmq scritte in php! Mi ha confuso il fatto che abbia reso globale l'oggetto smarty (che nelle funzioni di smarty viene passato come referenza: function smarty_function_html_image($params, &$smarty)).

    Secondo me mi sto veramente rincretinendo! Devo smettere di andare a Torre Annunziata!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.