phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Codice php "Ultimi messaggi"

Supporto per phpBB 3.0.x.
Avatar utente
giova95
Utente
Utente
Messaggi: 81
Iscritto il: 28/07/2012, 14:38
Sesso: Maschio
Versione: 3.0.11
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.0.95-log
Località: Biella
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da giova95 » 14/08/2012, 9:41

Le guide le ho lette, la query l'avevo a suo tempo messa in un file php richiamato da index.php con l'include, creato le variabili eccetera, ma l'errore visualizzato era lo stesso.
Sono arrivato a inserire la query direttamente nel template solamente come... "ultima spiaggia", per provare a vedere se in qualche modo funzionava.
Il fatto è che l'errore è quello di accesso al database...

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da Micogian » 14/08/2012, 9:57

SE hai letto le guide avresti potuto fare una semplicissima pagina personalizzata di prova

Codice: Seleziona tutto

<?php
/**
*
* @package phpBB3
* @version $Id$
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);

$user->setup();

// QUI CI METTI LA QUERY 

// e il risultato
?>
Questa Pagina non ha bisogno del template, serve solo a vedere il risultato della query.

Se tutto funziona si passa alla creazione dell'array e delle variabili da passare al template.

Nel tuo codice non ho visto se e dove crei le variabili per il template.
Queste si creano co la funzione template->assign_block_vars()

Codice: Seleziona tutto

$template->assign_block_vars('nome_array', array(
     'VARIABILE_1'      =>   $var1,
     'VARIABILE_2'      =>   $var2,
     'VARIABILE_3'      =>   $var3,
     'VARIABILE_4'      =>   $var4,

));
Nel template si usa un ciclo BEGIN per visualizzare i dati ricavati dalla query:

Codice: Seleziona tutto

<!-- BEGIN nome_array -->
Visualzza le variabili {nome_array.VARIABILE_1}, {nome_array.VARIABILE_2}, ecc.
<!-- END nome_array --> 
Tutte cose ben spiegate nelle Guide suddette.

Avatar utente
giova95
Utente
Utente
Messaggi: 81
Iscritto il: 28/07/2012, 14:38
Sesso: Maschio
Versione: 3.0.11
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.0.95-log
Località: Biella
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da giova95 » 14/08/2012, 10:18

Non avevo utilizzato il ciclo begin nel template perchè ho gestito in maniera diversa la cosa... assegnando alla variabile tutti i dati in una sola volta, ma sostanzialmente non cambia nulla.
Non ho provato a creare una pagina personalizzata.... su questo hai ragione, non ci ho proprio pensato, ma il fatto è che non cambia molto se c'è un errore di accesso al database si verifica sia qui che là.
Comunque per sicurezza provo, non costa nulla e ti ringrazio per il consiglio

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da Micogian » 14/08/2012, 10:37

Il BEGIN serve perche i dati passati al template sono un array, se fosse una unica variabile, come hai fatto tu, non serve.

La prova con la pagina personalizzata ha lo scopo di conrtrollare il risutato della query.
La pagina personalizzata ha la connessione al DB come index.php e come ho già detto, non serve creare il template per sdapere se la query produce un risultato.

La mia perplessità era perchè mi domando "perchè usare vie alternative e complicate quando phpbb ha un modo molto semplice per estrarre i dati dal database ? "

Avatar utente
giova95
Utente
Utente
Messaggi: 81
Iscritto il: 28/07/2012, 14:38
Sesso: Maschio
Versione: 3.0.11
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.0.95-log
Località: Biella
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da giova95 » 14/08/2012, 10:56

Il begin l'avevo evitato più che altro perchè non mi conosco bene il php e nel modo che avevo fatto avrebbe dovuto funzionare, se controlli nei messaggi più vecchi il metodo era di creare una stringa unica in questo modo:
$lastmex .= STRINGA

Si si l'avevo capito lo scopo della pagina personalizzata, semplicemente non ci avevo pensato prima ^^'
Hai ragione riguardo alla tuo dubbio, ma il fatto è che non funziona nemmeno con il metodo semplice :/La pagina personalizzata la faccio appena posso e ora, purtroppo, non posso, devo andare via.
Ti ringrazio ancora per la pazienza, capisco che è difficile trattare con gente che come me è ancora agli inizi e non ha molta confidenza con php e phpbb.

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da Micogian » 14/08/2012, 11:24

Ci vogliono 10 secondi a creare una custom page e aggiungere la tua query:

Codice: Seleziona tutto

<?php
/**
*
* @package phpBB3
* @version $Id$
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
//include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);

$user->setup('');

    $query = "SELECT pp.post_subject, pp.post_id, pp.topic_id,pp.forum_id, post_time, topic_title, pf.forum_name, pp.poster_id, pu.username, pf.forum_id
                FROM " . POSTS_TABLE . " pp, " . TOPICS_TABLE . " pt, " . FORUMS_TABLE . " pf, " . USERS_TABLE . " pu
             WHERE  pp.topic_id = pt.topic_id
             AND pu.user_id = pp.poster_id
             AND pf.forum_id = pp.forum_id
             AND pp.forum_id = pt.forum_id
             AND pp.post_id = pt.topic_last_post_id
             GROUP BY pp.topic_id
             ORDER BY post_time DESC LIMIT 0,15"; /*L'ultimo numero (il 10) va cambiato in base al numero di ultimi topic che si vuole estrarre*/         


        $risultato = mysql_query($query);

        if (!$risultato) {
            $lastmex = "Fallimento nell'esecuzione della query ($sql) dal DB: " . mysql_error();
        }

        if (mysql_num_rows($risultato) == 0) {
            $lastmex = "Nessuna riga trovata, niente da stampare quindi si esce";
        }

        while ($dati = mysql_fetch_assoc($risultato)) {
             $lastmex = $lastmex . "<li><span><a href='viewtopic.php?p=$dati[post_id]#p$dati[post_id]'>$dati[post_subject]</a></span><div>
          Inviato il " . date("j/n/y", $dati[post_time]) . " alle ore: " . date("H:m", $dati[post_time]) . "<br>Da <a href='memberlist.php?mode=viewprofile&u=" . $dati[poster_id] . "'>" . $dati[username] ."</a> su <a href='viewforum.php?f=" . $dati[forum_id] . "'> " . $dati[forum_name] ."</a></div></li>";

        }
        mysql_free_result($risultato);
      echo "$lastmex";
?>

Andrea RBR-W
Utente
Utente
Messaggi: 80
Iscritto il: 03/06/2012, 18:37
Sesso: Maschio
Versione: 3.0.10
Server: UNIX/Linux

Re: R: Codice php "Ultimi messaggi"

Messaggio da Andrea RBR-W » 14/08/2012, 12:15

Attenzione a una cosa.. i server linux sono case sensitive (sensibili alle maiuscole..) mentre windows no.. spesso le pagine in locale (winzoz + easyphp) mi funzionano e quando le butto online (linux) nn vanno.. ma ormai sono dove andare a cercare.. :)

Inviato dal mio Vodafone 858 con Tapatalk 2

Avatar utente
giova95
Utente
Utente
Messaggi: 81
Iscritto il: 28/07/2012, 14:38
Sesso: Maschio
Versione: 3.0.11
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.0.95-log
Località: Biella
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da giova95 » 19/08/2012, 14:43

Micogian ha scritto:Ci vogliono 10 secondi a creare una custom page e aggiungere la tua query:
SI lo so, ma dovevo proprio partire.
Ora che sono tornato mi ritrovo la spiacevole schermata dell'errore 508... per ora è inutile procedere con le modifiche, tanto non funziona il sito. Credo mi trasferirò su un altro hosting.
Comunque mi farò risentire appena sistemato questo spiacevole problema.
Per ora grazie di tutto

Avatar utente
giova95
Utente
Utente
Messaggi: 81
Iscritto il: 28/07/2012, 14:38
Sesso: Maschio
Versione: 3.0.11
Server: UNIX/Linux
PHP: 5.3.3
Database: MySQL(i) 5.0.95-log
Località: Biella
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da giova95 » 22/08/2012, 20:19

Eccomi, spero di avere risolto quel problema dell'errore 508, stavamo subendo un attacco da dei Croati... :shock:
Ho creato il file:
http://pc-zone.it/prova2.php Come potete vedere c'è comunque un errore!
Il codice de file è questo:

Codice: Seleziona tutto

<?php
/**
*
* @package phpBB3
* @version $Id$
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);

$user->setup();
$query = "SELECT pp.post_subject, pp.post_id, pp.topic_id, pp.forum_id, pp.post_time, pt.topic_title, pf.forum_name, pp.poster_id, pu.username, pf.forum_id, pt.topic_id, pu.user_id, pt.topic_last_post_id
            FROM   " . POSTS_TABLE . " pp, " . TOPICS_TABLE . " pt, " . FORUMS_TABLE . " pf, " . USERS_TABLE . " pu
         WHERE  pp.topic_id = pt.topic_id
         AND pu.user_id = pp.poster_id
         AND pf.forum_id = pp.forum_id
         AND pp.forum_id = pt.forum_id
         AND pp.post_id = pt.topic_last_post_id
         GROUP BY pp.topic_id
         ORDER BY pp.post_time DESC LIMIT 0,15"; 


    $risultato = mysql_query($query);

    if (!$risultato) {
        echo "Fallimento nell'esecuzione della query ($sql) dal DB: " . mysql_error();
        
    }

    if (mysql_num_rows($risultato) == 0) {
        echo "Nessuna riga trovata, niente da stampare quindi si esce";
    }

    while ($dati = mysql_fetch_assoc($risultato)) {
         $lastmex = $lastmex . "<li><span><a href='viewtopic.php?p=$dati[post_id]#p$dati[post_id]'>$dati[post_subject]</a></span><div>
      Inviato il " . date("j/n/y", $dati[post_time]) . " alle ore: " . date("H:m", $dati[post_time]) . "<br>Da <a href='memberlist.php?mode=viewprofile&u=" . $dati[poster_id] . "'>" . $dati[username] ."</a> su <a href='viewforum.php?f=" . $dati[forum_id] . "'> " . $dati[forum_name] ."</a></div></li>";

    }
    mysql_free_result($risultato);
  echo "$lastmex";
?>
Non credo di aver sbagliaot qualche cosa nel modificare il codice per farlo funzionare direttamente sulla pagina... anche perchè lo stesso codice funziona se lo metto su un forum di altervista!!!!

Avatar utente
Micogian
Leader Programmatori
Leader Programmatori
Messaggi: 3704
Iscritto il: 07/01/2010, 8:51
Versione: 3.2.0
Server: UNIX/Linux
PHP: 5.4.36
Database: MySQL 5.1.70-log
Località: Udine
Contatta:

Re: Codice php "Ultimi messaggi"

Messaggio da Micogian » 22/08/2012, 23:36

mysql_query($query) è una funzione php, in phpbb si usa $db->sql_query($query);
Prova a sostituire

Codice: Seleziona tutto

$risultato = mysql_query($query);
con questo

Codice: Seleziona tutto

$db->sql_query($query);
$risultato = $db->sql_query($query);

Rispondi

Torna a “[3.0.x] Forum di Supporto”

Chi c’è in linea

Visitano il forum: Nessuno e 63 ospiti