Pagina 1 di 4

problemi pagina personalizzata

Inviato: 01/03/2010, 20:08
da BMercer
In una pagina personalizzata pinco.php ho il seguente codice aggiunto dopo quello presente nella guida qui che spiega come creare pagine personalizzate:

Codice: Seleziona tutto

    function clan_menu() {
    
        global $db;
        
            // impostiamo la query che ricava le infomazioni
            $sql = "SELECT * FROM phpbb_groups
                WHERE group_colour = '0099ff'    
                ORDER BY group_name ASC";
            $result = $db->sql_query($sql);

            // ora impostiamo un ciclo while per mostrare tutti i risultati ...
            while($table = $db->sql_freeresult($result)) {
            echo '<option value="'. $table['group_name'] .'">'. $table['group_name'] .'</option>';
            }

    }
 
Poi associata al template così:

Codice: Seleziona tutto

$template->assign_vars(array(
    'CLAN_MENU'    => clan_menu()
));
 
e richiamata nel template così:
{CLAN_MENU}

Codice: Seleziona tutto

                                <form action="#" method="post">
                <select name="add_name" >
                <optgroup label="Clans">
                {CLAN_MENU}
                </optgroup>
                </select><br/>
                </form>
 
Ma non mi viene fuori nulla (menu a tendina vuoto).
Cosa ho sbagliato?

Re: problemi pagina personalizzata

Inviato: 01/03/2010, 20:34
da Carlo
Problema:

Codice: Seleziona tutto

            while($table = $db->sql_freeresult($result)) {
La funzione da utilizzare, non è $db->sql_freeresult, ma bensì $db->sql_fetchrow.

Alcuni suggerimenti:
- Nella query, sostituire phpbb_groups con la costante GROUPS_TABLE, in questo modo:
  • Codice: Seleziona tutto

                $sql = "SELECT * FROM " . GROUPS_TABLE . "
                    WHERE group_colour = '0099ff'    
                    ORDER BY group_name ASC";
- Dopo il ciclo while, possiamo utilizzare la funzione $db->sql_freeresult().

Re: problemi pagina personalizzata

Inviato: 02/03/2010, 6:31
da BMercer
Ho sostituito a sql_freeresult "sql_fetchrow", ma continua a non mostrarmi i risultati... :(

Re: problemi pagina personalizzata

Inviato: 02/03/2010, 7:10
da Carlo
Hai provato a eseguire la query direttamente sul database?

Re: problemi pagina personalizzata

Inviato: 02/03/2010, 7:27
da Micogian
Io proverei a escludere il template e controllare il risultato che dà il file php.
In questo modo sai se il problema è legato al php o al template.

Re: problemi pagina personalizzata

Inviato: 02/03/2010, 14:58
da BMercer
In locale avevo fatto la prova con un fiel esterno a phpbb con il seguente codice e mi aveva funzionato alla grande

Codice: Seleziona tutto

    function clan_menu() {
    
        include('common.php');
        
            // impostiamo la query che ricava le infomazioni
            $sql = "SELECT * FROM phpbb_groups
            WHERE group_colour = '0099ff'    
            ORDER BY group_name ASC";
            $result = mysql_query($sql, $connessione) or die('<div id="error">Errore nell eseguzione della query</div>');

            // ora impostiamo un ciclo while per mostrare tutti i risultati ...
            while($table = mysql_fetch_assoc($result)) {
            echo '<option value="'. $table['group_name'] .'">'. $table['group_name'] .'</option>';
            }
    }
 
Il file common contiene i dati per la connessione al database.

Re: problemi pagina personalizzata

Inviato: 02/03/2010, 15:06
da Carlo
Prova ad abilitare il debug in phpBB, così puoi notare eventuali errori.

Per farlo, nel file config.php, togli i due slash dalla riga (o qualcosa del genere):

Codice: Seleziona tutto

// @define('DEBUG', true);

Re: problemi pagina personalizzata

Inviato: 02/03/2010, 15:36
da Micogian
Forse non è un "template -->assign_vars(array(..." che devi usare ma un semplice "template -->assign_var('CLAN_MENU'....

Vedi http://wiki.phpbb.com/Template.assign_var

Re: problemi pagina personalizzata

Inviato: 02/03/2010, 15:39
da Carlo
@bingo: E' la stessa cosa, ma con il metodo assign_vars() è possibile assegnare al template più variabili in una sola volta.

Re: problemi pagina personalizzata

Inviato: 02/03/2010, 17:12
da Micogian
Infatti la mia era solo un'ipotesi, come quella di assegnare un nome all'array

Codice: Seleziona tutto

$template->assign_vars('clanmenu', array(     
    'CLAN_MENU'    => clan_menu()
   ));
e poi richiamarlo nel template con
{clanmenu.CLAN_MENU}, ma anche questo può essere la stessa cosa.

Resto dell'idea che di fronte a un problema del genere avrei tolto il collegamento al template e avrei controllato il risultato del file php.